基本上,我如何才能从指令中听到表达式的变化?
我正在使用无证ng-required
有条件地要求某个字段:
<input type="checkbox" ng-model="partner" checked />
<input ng-model="partnerName" placeholder="required" ng-required="partner" />
这很好用(这里是 Plunkr)。唯一的问题是它保留了placeholder
“必需”文本,而不管它是否实际需要。
所以,我决定创建自己的指令。这是它应该如何工作的:
<input ng-placeholder="{ 'required': partner }" />
这个想法类似于 angular's ng-class
,但我无法做到这一点。这是我到目前为止所得到的:
app.directive('ngPlaceholder', function ($parse) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
console.log( scope.$eval(attrs.ngPlaceholder) );
}
}
});
它记录了一个很好的对象,我可以用它来确定placeholder
值:
{ required: true }
但是我如何挂钩$digest
/$apply
循环以在更改placeholder
时更新属性partner
?