【发布时间】:2014-12-09 10:20:36
【问题描述】:
我有一个包含我的应用程序模型的服务:
angular.module('adminClient').factory('myApi', function () {
var model = {};
model.myObject = {
label: 'New York City'
};
return {
model: function () {
return model;
}
};
});
partial/controller 可以访问模型并且可以设置一个新的 myObject:
angular.module('adminClient').controller('MySelectNetworkCtrl', function ($scope, myApi) {
$scope.myObject = myApi.model().myObject;
});
除此之外,我还有一个指令应该显示 myObject 中包含的标签:
angular.module('nav').directive('myTopBar', function(myApi) {
return {
restrict: 'E',
replace: true,
scope: {},
templateUrl: 'nav/directive/my-top-bar/my-top-bar.html',
link: function(scope, element, attrs, fn) {
scope.myObject = myApi.model().myObject;
}
};
});
这是 HTML:
<div id="my-top-bar">
<span ng-bind="myObject"></span>
</div>
当我运行应用程序时,标签显示正常(纽约市),但一旦控制器更改 myObject,指令中的标签保持不变。我也可以在 Chrome Angular 范围检查器中看到这一点。
知道如何让指令在被控制器更改后显示当前值吗?
【问题讨论】:
-
with a scope: {} 在指令中定义您正在创建新的隔离范围,尝试将其删除。
-
我尝试将范围设置为 true,但这没有帮助。恕我直言,我需要一个孤立的范围,因为我正在使用包含所有数据的服务。
标签: angularjs angularjs-directive angularjs-service