Javascript 从指令中观察表达式
基本上,如何从指令中侦听表达式中的更改Javascript 从指令中观察表达式,javascript,angularjs,directive,Javascript,Angularjs,Directive,基本上,如何从指令中侦听表达式中的更改 我使用未记录的ng required有条件地要求某个字段: <input type="checkbox" ng-model="partner" checked /> <input ng-model="partnerName" placeholder="required" ng-required="partner" /> 这个想法类似于angular的ng类,但我没有办法做到这一点。以下是到目前为止我得到的信息: app.dire
我使用未记录的
ng required
有条件地要求某个字段:
<input type="checkbox" ng-model="partner" checked />
<input ng-model="partnerName" placeholder="required" ng-required="partner" />
这个想法类似于angular的ng类
,但我没有办法做到这一点。以下是到目前为止我得到的信息:
app.directive('ngPlaceholder', function ($parse) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
console.log( scope.$eval(attrs.ngPlaceholder) );
}
}
});
它记录了一个很好的对象,我可以使用它来确定占位符
值:
{ required: true }
但是,当合作伙伴发生更改时,我该如何进入$digest
/$apply
循环来更新占位符
属性?这就是您想要的吗
链接函数的基本思想如下
link: function (scope, element, attrs) {
scope.$watch(attrs.xngPlaceholder, function (newVal, oldVal, scope) {
element.removeAttr('placeholder');
var att = '';
angular.forEach(newVal, function (elm, key)
att += elm ? (key + ' ') : '';
});
element.attr('placeholder', att);
}, true);
}
不需要指令的替代方法:
placeholder="{{{true: 'required', false:''}[partner]}}"
上面创建对象{true:'required',false:'}
,然后使用当前值partner
索引到对象中。建议:不要使用ng-prefix,因为它是角度,除非您知道在将来的版本中,它们将使用相同的语法实现ng占位符谢谢!没错。然而,我只是使用原始的邮政编码。
placeholder="{{{true: 'required', false:''}[partner]}}"