0

我创建了一个角度控制器和服务。在我的服务中,我有一个数组在应用程序加载时开始为空白,但稍后会填充。在我的控制器中,我在 $scope 上有一个指向该数组的属性。当服务中的数组更新时,我假设 $scope 属性也会更新,并且 DOM 也会相应更新。这是示例代码。

app.controller("myCtlr", ["$scope", "$service", function($scope, $service){

   $scope.friends = $service.friends

}]);

app.factory("$service", function($http){

   var friends = {};

   friends = {

      get: function(){
        $http.get("/someurl").success(function(data){

           // data is the array of friends
           friends = data; 

        });           
      }

   };



});

我试过使用angular.extend,但网上没有很多好的例子,所以我还没有完全理解。任何帮助深表感谢。谢谢!

4

1 回答 1

2

Angular$http会自动启动一个摘要循环,您还应该return friends从您的服务.then中继续使用 promise 模式:

app.factory("$service", function($http){

    var friends = {};

    friends = {

    get: function(){
        $http.get("/someurl").then(function(data){
            return data.data
        });    
    }

    return friends;
});

在你的控制器中:

$service.friends.get().then(function(data) {
    console.log(data);
});
于 2013-10-31T16:22:30.243 回答