我在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