首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >指令不会在服务模型更改时更新

指令不会在服务模型更改时更新
EN

Stack Overflow用户
提问于 2014-10-14 22:54:53
回答 2查看 1.1K关注 0票数 0

我有一个包含应用程序模型的服务:

代码语言:javascript
运行
复制
angular.module('adminClient').factory('myApi', function () {
    var model = {};
    model.myObject = {
        label: 'New York City'
    };

    return {
        model: function () {
            return model;
        }
    };
});

部分/控制器可以访问模型,并可以设置新的myObject:

代码语言:javascript
运行
复制
angular.module('adminClient').controller('MySelectNetworkCtrl', function ($scope, myApi) {

    $scope.myObject = myApi.model().myObject;

});

除此之外,我还有一个指令可以显示包含在myObject中的标签:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
<div id="my-top-bar">
    <span ng-bind="myObject"></span>
</div>

当我运行应用程序时,标签显示得很好(纽约市),但是一旦控制器更改了myObject,指令中的标签就保持不变。我也可以在Chrome角度范围检查器中看到这一点。

你知道如何让指令显示当前的值,即使在控制器改变之后?

EN

Stack Overflow用户

发布于 2014-10-14 23:29:58

这完全取决于控制器如何更新模型对象。由于您的代码

scope.myObject = myApi.model().myObject;

获取这个特定的模型对象,只要更改了模型对象的myObject属性,它就能正常工作。

但如果控制器这样做

myApi.model().myObject= {}; //or any new object

现在,服务返回的模型具有不同的myObject,指令模型也不同。因此,更改不起作用。

相反,在do指令中:

scope.myObject = myApi.model(); // bind to model

并相应地更新指令模板中的绑定。看看它是否起作用

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26363927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档