Angular Directive摘要循环,最佳实践



我有一个textfield指令,它根据directive标记上设置的某些属性进行各种验证。根据ngModel的初始化情况,该指令会对自身进行初始化。我对属性有一些观察者,他们试图根据在属性上设置值来运行功能,但有时在指令尚未完全初始化时会这样做。因此,当初始化时没有设置为true:

scope.initialized = false;
ngModelController.$render = function() {
    scope.initialized = true;
    //do stuff
};
attrs.$observe('showValidationMessage', function () {
    //do other stuff
});

如何处理此初始化/默认例程?我应该使用compile函数进行默认设置吗?最好的方法是什么?

我所做的是在初始化函数的末尾粘贴手表,所以如下所示:

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 } );来实例化您的观察程序。

最新更新