Angular Directive摘要周期,最佳实践

时间:2015-04-09 08:36:24

标签: angularjs directive angular-ngmodel

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

scope.initialized = false;
ngModelController.$render = function() {
    scope.initialized = true;
    //do stuff
};

attrs.$observe('showValidationMessage', function () {
    //do other stuff
});

您如何处理此初始化/默认例程?我应该使用编译功能进行默认吗?对此最好的方法是什么?

1 个答案:

答案 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 } );然后实例化您的观察者。