在AngularJS中是否可以强制视图从其控制器外部更新?

时间:2013-01-18 07:00:20

标签: javascript model-view-controller angularjs

编辑:

标题中所述的问题在下面正确回答,所以我认为为了让人们知道如何做到这一点,我应该在下面给出答案。

事实证明,我正在使用的框架并没有完全抽象出Angular的变量to-camelcase约定。它在其他任何地方被抽象出来,只是不在这里,现在一切正常,所以我根本不需要强制重绘。如果有人这样做,请参阅下面的答案。 :)

1 个答案:

答案 0 :(得分:7)

在指令内部进行事件绑定,而不是在控制器内。如果您对某个模型进行了更改并希望这些更改反映在指令之外,则必须从指令内部调用$apply()

myApp.directive('someDir', function () {
    return {
        restrict: 'E',
        scope: {
            model: '=',
        },
        link: function (scope, elt, dirs) {
            elt.bind('click', function () {
                scope.$apply(function () {
                    // make changes to scope.model
                });
            });
        }
    }
});