【问题标题】:Angular Directive digest-cycle, best practiceAngular Directive 摘要循环,最佳实践
【发布时间】:2015-04-09 08:36:23
【问题描述】:

我有一个文本字段指令,它根据指令标记上设置的某些属性进行各种验证。 该指令根据 ngModel 的初始化方式进行自身初始化。 我有一些关于属性的观察者,他们尝试根据在属性上设置值来运行功能,但有时会在指令尚未完全初始化时完成。因此,当初始化时未设置为 true:

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

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

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

【问题讨论】:

    标签: angularjs directive angular-ngmodel


    【解决方案1】:

    我所做的是在我的初始化函数结束时粘贴手表,所以是这样的:

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

    【讨论】:

    • 非常有意义,但是当我将特定属性的观察者放在这个 self.initialise 函数中时,它不会在加载指令时被触发。这让我回到我的主要问题:你如何处理这个初始化/默认例程?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2018-09-23
    • 2012-09-20
    • 1970-01-01
    • 2019-03-16
    相关资源
    最近更新 更多