我创建了一个指令,应该向所有子输入标签动态添加一个 ng-change 指令:
myApp.directive('autosave', function ($compile) {
return {
compile: function compile(tElement, tAttrs) {
return function postLink(scope, iElement, iAttrs) {
var shouldRun = scope.$eval(iAttrs.autosave);
if (shouldRun) {
iElement.find(':input[ng-model]').each(function () {
$(this).attr("ng-change", iAttrs.ngSubmit);
});
$compile(iElement.contents())(scope);
console.log("Done");
}
}; //end linking fn
}
};
});
我遇到的问题是 ng-change 指令没有运行。我可以看到它已添加到 DOM 元素中,但在值更改时未执行。
奇怪的是,如果我尝试使用 ng-click,它确实有效。
不知道这是 ng-change 的错误还是我做错了什么。
小提琴是用ng-click(点击输入)http://jsfiddle.net/dimirc/fq52V/
小提琴与 ng-change 一起使用(应该在更改时触发)http://jsfiddle.net/dimirc/6E3Sk/
顺便说一句,如果我将所有内容移至编译函数,我可以完成这项工作,但我需要能够评估指令的属性,并且我无法从 compile fn 访问指令。
谢谢