我对角度很新,有问题,我想用变量来定义ng模型。这现在有效,但现在我遇到的问题是ng-change事件在使用此指令时会触发两次。
我将dynamic-model指令的优先级设置为-1,因为ng-change取决于当然的模型......
...
app.controller('testcontroller', function($scope, $http) {
$scope.model = "dynamicmodel";
})
app.directive('dynamicModel',function($compile){
directive = {
priority : -1,
link:function(scope,element,attr){
element[0].removeAttribute('dynamic-model');
element[0].setAttribute('ng-model',scope.$eval(attr.dynamicModel));
$compile(element[0])(scope);
}
}
return directive;
});
和html
<p>[[item.key]] <input type="text" dynamic-model="model" ng-change="update()" ng-model-options="{updateOn:'default blur', debounce:{default:1000, blur:0}}"></p>
请参阅此小提琴http://jsfiddle.net/r9t2mjy4/
我该怎么办?非常感谢
答案 0 :(得分:0)
在指令中,如果您向元素添加另一个指令,请确保它的优先级低于您的指示。
调用$ compile传递当前优先级:
app.directive('dynamicModel',function($compile){
directive = {
priority: 2,
link: function(scope,iElement,iAttrs){
iElement[0].removeAttribute('dynamic-model');
iAttrs.$set('ng-model',scope.$eval(attr.dynamicModel));
$compile(iElement[0])(scope, null, 2);
}
}
return directive;
});