我有一个textfield指令,它根据Directive标记上设置的某些属性执行各种验证。 根据ngModel的初始化,该指令初始化自身。 我有一些关于属性的观察者试图基于在属性上设置值来运行功能,但是当指令尚未完全初始化时,有时会这样做。因此,当initialized未设置为true时:
scope.initialized = false;
ngModelController.$render = function() {
scope.initialized = true;
//do stuff
};
attrs.$observe('showValidationMessage', function () {
//do other stuff
});
您如何处理此初始化/默认例程?我应该使用编译功能进行默认吗?对此最好的方法是什么?
答案 0 :(得分:0)
我所做的是在初始化功能结束时粘贴手表,如下所示:
MyApp.controller('SomeCtrl', function(scope) {
var self = this;
/**
* Initialise the Controller and Scope
/*
self.Initialise = function() {
// Do something here
// End by setting up watches
};
// Initialise the Controller
self.Initialise();
});
这样,在您设置观察者时,范围已经初始化。另请注意,如果您使用$q
的任何异步调用,则可以使用.finally( function callback() { // setup observer } );
然后实例化您的观察者。