Angularjs:数据绑定不工作
Angularjs: Databinding not working
在控制器中绑定一个 service/factory 变量非常有效,除非工厂变量是通过 $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;
}]);
正如我在评论中提到的,发生这种情况的原因是因为 $scope.jsonData = testFactory.jsonData;
是一个 value 赋值,不幸的是该值无法从当这个分配发生时服务器还没有。其他作业有效,因为它们是 reference 作业。
解决此问题的一种快速但肮脏的方法是声明 factory.jsonData = {};
而不是 factory.jsonData;
。这将更改对引用分配(对象到对象)的调用,并允许对一个对象的更改传播到另一个。
在控制器中绑定一个 service/factory 变量非常有效,除非工厂变量是通过 $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;
}]);
正如我在评论中提到的,发生这种情况的原因是因为 $scope.jsonData = testFactory.jsonData;
是一个 value 赋值,不幸的是该值无法从当这个分配发生时服务器还没有。其他作业有效,因为它们是 reference 作业。
解决此问题的一种快速但肮脏的方法是声明 factory.jsonData = {};
而不是 factory.jsonData;
。这将更改对引用分配(对象到对象)的调用,并允许对一个对象的更改传播到另一个。