我在AngularJS的数据绑定中遇到了一些麻烦。 总之,我试图将我的工厂变量链接到我的视图($ scope)。 工厂(在我的完整实现中)侦听特定的广播并更新变量,视图应该反映这种变化,但事实并非如此。Angularjs在工厂和视图之间进行数据绑定
我设法从大部分其他代码中分离出这个问题。控制器调用的函数(setTrue)只是一些难度较大的后端操作的占位符。
运行代码时,我希望在视图中看到“true”。我不知道为什么这个观点仍然是“假”?
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.js"></script>
<body ng-app="app">
<div ng-controller="Fact">
value: {{model}}<br/>
</div>
<script type="text/javascript">
var app = angular.module("app", []);
app.controller('Fact', ['$scope','Fact', function ($scope, Fact) {
$scope.model = Fact.data;
Fact.setTrue();
}]);
app.factory("Fact", function() {
var Fact = {};
Fact.data = false;
Fact.setTrue = function() {
Fact.data = true;
};
return Fact;
});
</script>
</body>
Plunker:http://plnkr.co/edit/IIq2H4gW1DBoe5zVPx0g
可有人告诉我,我做错了什么?
编辑:
当我改变了上面的代码有
$scope.model = Fact;
和
value: {{model.data}}
这突然的作品...但我不喜欢把我的整个工厂都在我的范围内。
布尔值通过值传递,而不是通过引用 – JoseM 2014-10-03 14:10:48
为什么您反对将工厂对象放在范围内?这是做到这一点的正确方法,当你创建一个工厂它是一个单身对象,并且它应该被用来设置范围值 – 2014-10-03 14:40:16
@JaredReeves如果我只是把工厂放在$ scope中,那么我真的不会看到有控制器的一点? – user3319803 2014-10-03 14:45:29