Angularjs:数据绑定无法正常工作

时间:2015-10-17 07:47:11

标签: angularjs http data-binding binding

绑定控制器中的服务/工厂变量非常有效,除非工厂变量是通过$ http启动的。任何人都可以解释原因吗?

注意:由于controller.someVariable = factory.someVariable不起作用。目前我直接引用工厂变量进行操作 factory.someVariable

控制器:

app.controller('SecondCtrl',function($scope,testFactory){
  $scope.obj = testFactory.obj;
  $scope.factory = testFactory;
  $scope.jsonData = testFactory.jsonData;   //Not Binding

  //Accessing $scope.factory.jsonData works while $scope.jsonData doesn't
});

工厂:

app.factory('testFactory', ['$rootScope','$http',function ($rootScope,$http) {

    var factory = {};

    factory.obj = { 'name':'Jhon Doe'};

    factory.jsonData;

    factory.fromjson = function() {
      $http.get("data.json")
        .success(function(data){
           factory.jsonData  = data.result;
        })

    }

    factory.fromjson();

    return factory;

}]);

Plunker: http://plnkr.co/edit/wdmR5sGfED0jEyOtcsFz?p=preview

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,发生这种情况的原因是因为$scope.jsonData = testFactory.jsonData;是一个分配,很遗憾,这个值在服务器上无法提供分配发生。其他作业有效,因为它们是参考作业。

解决此问题的一种快速但肮脏的方法是声明factory.jsonData = {};而不是factory.jsonData;。这将改变对引用赋值(对象到对象)的调用,并允许对一个的更改传播到另一个。