简体   繁体   English

Angular排队ng-init

[英]Angular, queuing ng-init

Is it possible queuing ng-init? 是否可以对ng-init进行排队? Generally, in first init I want to add JSON file to prototype vars (array) and in another init depending on the params I want to skip getJsonData() or add other JSON file to prototype. 通常,在第一次初始化时,我想将JSON文件添加到原型vars(数组)中,在另一个初始化中,根据参数,我想跳过getJsonData()或将其他JSON文件添加到原型中。

function init(param) {
        console.log("startInit");

        // big JSON file
        var promise =  getJSON(param);  
        return promise.then( function() {
            //some func
            console.log("finish");
            return true;
        });
    };

    function getJSON(param) {
        var deferred = $q.defer();
        console.log("startInitDataInner");
            someService.getJsonData(param).then(function(data) {
                // some code
                console.log("endInitDataInner");
                deferred.resolve();

            }, function(error) {
                deferred.reject();
            });

        return deferred.promise; 

    }; 

in view ng-init 鉴于ng-init

ng-init="init(param)"
ng-init="init(param)"
// ...

and log: 并记录:

startInit
startInitDataInner
startInit
startInitDataInner
endInitDataInner
finish
endInitDataInner
finish
//..


Edit: 编辑:
Generally, I want to create something like plugin in jQuery. 通常,我想在jQuery中创建类似插件的内容。 I have this code: 我有以下代码:

<div ng-controller="parentController as parent">
   <div ng-controller="childController as child" ng-init="child.init(parent.data)"></div>
</div>

<div ng-controller="parentController as parent">
   <div ng-controller="childController as child" ng-init="child.init(parent.data2)"></div>
</div>

and configurable part by user: 和用户可配置的部分:

 angular.module('myApp').controller('parentController', ['$scope', function($scope) {
 this.data = {
    config: {
       lang: "en",
       title: "title"
       }
 };
 this.data2 = {
    config: {
       lang: "pl",
       title: "title2"
    }
 };         
 }]);

ng-init update api: ng-init更新API:

angular.extend(this, parent.data);

Do you have any ideas how I should do it differently? 您有任何想法我应该如何做吗?

Well, if you are working with angular, you use controllers. 好吧,如果您使用的是角度,则可以使用控制器。 What is controller itslfmin general meaning? 控制器itslfmin的一般含义是什么? Right, its a constructor function. 对,它是一个构造函数。 The main word here is function . 这里的主要词是功能 What does function in general? 一般起什么作用? Run the code inside. 在其中运行代码。

So, just place your initial logic at the beggining of controller code (but without wrapping it as a separate function) and it will run just in time your controller will be resolved by angular resolver. 因此,只需将您的初始逻辑放在控制器代码的开头即可(但不将其包装为单独的函数),它将立即运行,您的控制器将由角度解析器解析。

var controller = function () {
    // vars, costs, etc.
    console.log("startInit");

    // big JSON file
    var promise =  getJSON(param);  
    return promise.then( function() {
        //some func
        console.log("finish");
        return true;
    });

};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM