在AngularJS中,是否可以强制视图从外部进行更新's控制器

In AngularJS is it possible to force a view to update from outside of it's controller?

本文关键字:更新 控制器 从外部 视图 AngularJS 是否      更新时间:2023-09-26

编辑:

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

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

在指令中执行事件绑定,而不是在控制器中执行。如果您对某个模型进行更改并希望这些更改反映在指令之外,则必须从指令内部调用$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
                });
            });
        }
    }
});