我正在尝试制作一个在输入后插入元素的指令(用指令标记),但也会更新插入元素的输入。
angular.module('afterDir', [])
.directive('after', function ($compile) {
return {
require: 'ngModel',
link: function (scope, element, attrs, ngModel) {
scope.clickHandler = function (index) {
console.log(index);
ngModel.$setViewValue("something");
}
var content = angular.element('<ul><li ng-click="clickHandler()">after</li><li ng-click="clickHandler()">after too</li></ul>');
content.insertAfter(element);
$compile(content)(scope);
}
}
});
点击处理程序触发但模型没有更新,是否还需要调用其他内容来更新模型?谢谢!
答案 0 :(得分:2)
如果你添加一个 ngModel。$渲染() 在你之后 $ setViewValue() 你应该得到你需要的东西。
这是一个傻瓜。 http://plnkr.co/edit/nZgMiZZD4Vna6vMb4LZr
对于一些解释,$ setViewValue将更新控制器内部viewValue,如果需要它将脏化表单,它将更新内部modelValue以及模型本身。
$ render实际上将获取内部viewValue并将其推送到DOM。