我刚刚接触到了controllerAs的angular语法,并试图了解它如何与指令一起工作。我创建了一个用于密码验证的指令。我想根据条件使标记为真,并且这些标记将用于父模板中以显示错误消息。我没有得到我该如何实现这一点!
VIEW
<div ng-app="myapp">
<fieldset ng-controller="PersonCtrl as person">
<input name="emailID" type="text" ng-model="person.first" >
<input name="pass" type="password" ng-model="person.pass" password-validator>
<p ng-show="person.showMsg">Password validation message here.</p>
</fieldset>
</div>
指令
myapp.directive('passwordValidator',function() {
return {
controller : PasswordCtrl,
controllerAs : 'dvm',
bindToController : true,
require : ['ngModel','passwordValidator'],
link : function(scope,ele,attrs,ctrls) {
var person = ctrls[1];
var ngModelCtrl = ctrls[0];
scope.$watch(function() {
return ngModelCtrl.$modelValue;
},function(newVal) {
if(newVal!='') {
person.showMsg = true;
} else {
person.showMsg = false;
}
console.log(person.showMsg);
});
}
}
function PasswordCtrl() {
}
});
特别我想知道为什么,以及如何下方手表做工精细!
// Why this below is also working, can anyone explain what's going behind!!
scope.$watch('person.pass',function(newVal) {
console.log("Watch fires");
});
这仅仅是学习的目的,所以请解释如何controllerAs
和bindToController
作品!
你的要求是什么?解释或解决方案 –
解决方案详细说明它的工作原理。 –
在angularjs中使用指令时(或者只是使用angularjs),它对于理解摘要生命周期很重要,它基本上是对作用域模型和视图之间的变化进行脏检查。这是使我们的生活更容易的核心功能。这是我读过的关于该主题的最好的文章https://www.sitepoint.com/understanding-angulars-apply-digest/ –