【发布时间】:2017-02-07 06:59:51
【问题描述】:
我是新来的控制器作为角度的语法,只是想了解它是如何与指令一起工作的。我创建了一个密码验证指令。我想根据条件使一些标志为真,这些标志将在父模板中用于显示错误消息。我不明白我怎么能做到这一点!
查看
<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 时),了解摘要生命周期很重要,这基本上是对范围模型和视图之间更改的脏检查。这是使我们的生活更轻松的核心功能。这是我读过的关于该主题的最佳文章sitepoint.com/understanding-angulars-apply-digest
-
小提琴工作正常! msg true 和 false 有一些条件变化。那么你的问题是什么?
-
你能给我工作小提琴链接吗?你有什么改变?
标签: javascript angularjs angular-directive