假设我有以下标记:
<input name="username" type="text" ng-model="vm.username" available="{{vm.blarg}}">
我们可以说blarg
设置为&#34; foo&#34; (来自页面的控制器 - 而不是来自下面的指令)。
我有以下指令:
angular.module('app')
.directive('available', RegistrationCtrl);
function RegistrationCtrl() {
var directive = {
restrict: 'A',
require: 'ngModel',
scope: {
ngModel: '=ngModel'
},
link: function(scope, element, attrs, ngModel) {
console.log("link: " + attrs.available); //output: "foo"
},
controller: ExampleController,
controllerAs: 'vm',
bindToController: true
};
return directive;
}
function ExampleController($attrs) {
console.log("controller:" + $attrs.available); //output: "{{vm.blarg}}"
}
我的问题:有没有办法使控制器(指令)等到所有属性被角度解析(评估)的那一刻:
{{vm.blarg}} -> "foo"
换句话说,我希望该指令仅在第一个摘要周期结束后才能运行。
答案 0 :(得分:0)
根据角度文档,最佳做法是:
如果要将API公开给其他指令,请使用控制器。 否则使用链接。
在您的指令中,如果没有要公开的API,则不要使用控制器。您的所有逻辑都在链接功能中,您可以在其中查看范围属性以进行更改。