编辑:
标题中所述的问题在下面正确回答,所以我认为为了让人们知道如何做到这一点,我应该在下面给出答案。
事实证明,我正在使用的框架并没有完全抽象出Angular的变量to-camelcase约定。它在其他任何地方被抽象出来,只是不在这里,现在一切正常,所以我根本不需要强制重绘。如果有人这样做,请参阅下面的答案。 :)
答案 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
});
});
}
}
});