我有一个指令,我想更改该指令给出的 ng-model 值...我正在设置scope: {ngModel: '='}
并且我正在更改我的指令中的 ngModel 值(点击事件),但我看不到我的更改外部/原始对象。
这个plunker显示了问题......
我有一个指令,我想更改该指令给出的 ng-model 值...我正在设置scope: {ngModel: '='}
并且我正在更改我的指令中的 ngModel 值(点击事件),但我看不到我的更改外部/原始对象。
这个plunker显示了问题......
这里有一些错误,都是常见的错误。
通过 jQuery using 注册的事件处理程序$(...).on(...)
将在 Angular 上下文之外执行,因此 Angular 将不知道事情何时更新。要解决这个问题,您必须将内容包装在scope.$apply
这样的调用中
$('#aaa').on('click', function() {
_scope.$apply(function(){
_scope.ngModel = 'Other Value';
updateTemplate();
});
});
这将使用 更新与输入的绑定ng-model
。事实上,您可以通过使用ng-click
指令来避免这样做。
使用 Angular,您无需使用.html(...)
. 绑定是该框架的主要功能之一。您可以通过在其中放置一个表达式来使用插值,而不是使用更新功能,{{ ... }}
并且您的 DOM 将在您的模型更新时更新。例如,在定义指令时,您可以使用
template: '<div id="aaa">{{ngModel}}</div>'
设置您的模板{{ngModel}}
并将显示ngModel
.
ngModel
不只是任何属性,它是一个强大的指令。如果您需要自己的指令来声明当前模型有效或无效,或者与表单交互,那么您应该通过require
控制器上的属性使用它(参见此处)。
如果您不需要这些功能,那么您应该将您的属性称为不同的东西以避免冲突。
我已经更新了plunker以包括这些点。