javascript - 如何通过javascript设置ngModelOptions?

标签 javascript angularjs directive

我正在创建一个自定义指令,该指令需要句柄 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/

相关文章:

javascript - Angular 指令将模板分配给 Body,但保持相同的范围/ Controller

javascript - jQuery 冲突或

javascript - 如何在 angularjs 中将数据从工厂传递到我的 Controller ?

angularjs - ng-model 不在 ng-repeat 内更新

javascript - url 哈希更改成功 - 在 Angular 指令中

javascript - TemplateUrl angularJS 不工作

javascript - 如何防止提交时刷新但又实际提交表单?

JavaScript 连接两个 Map 对象

javascript - Javascript 中四舍五入到小数点后两位

javascript - "Cannot read property ' childNodes ' of undefined"使用 list.js 将 Controller 添加到列表元素