我正在创建一个自定义指令,该指令需要句柄 ngModelOptions
元素,也许我可以用 jQuery
来改变元素 html选择器,但我想知道我是否可以通过javascript
来做到这一点为了更好的一致性
更新 1
因为我需要设置ngModelOptions="{updateOn:'blur'}
对于我表单中的所有输入
所以我想创建一个指令来执行此操作,可能是 <input type='text' updateBlur/>
我想知道是否可以使用代码设置此选项,可能是这样
myElement.attrs.ngModelOptions.updateOn = "blur default";
最佳答案
您必须以“Angular 方式”执行此操作,因此您应该在指令中执行类似的操作:
angular.module("myApp").directive('myDirective', function($compile){
link: function(scope, element, attrs) {
scope.$watch( 'scope.someValue', function(){
element.attr('ng-model-options', "new value");
$compile(element.contents())(scope);
});
}
});
通过这种方式,您可以检查 scope.someValue
的更改,并将新值应用于指令。您不能使用 jquery 执行此操作,因为 angularJS 不会获得更改。
但是,使用这个 $compile(element.contents())(scope);
就可以了。
编辑:$scope.apply()
,不应该工作。因为有必要强制进行摘要循环(例如将更多元素添加到数组中)。这里你改变了结构,所以你需要重新编译它
关于javascript - 如何通过javascript设置ngModelOptions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584989/