簡體   English   中英

Angular排隊ng-init

[英]Angular, queuing ng-init

是否可以對ng-init進行排隊? 通常,在第一次初始化時,我想將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; 

    }; 

鑒於ng-init

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

並記錄:

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


編輯:
通常,我想在jQuery中創建類似插件的內容。 我有以下代碼:

<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>

和用戶可配置的部分:

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

ng-init更新API:

angular.extend(this, parent.data);

您有任何想法我應該如何做嗎?

好吧,如果您使用的是角度,則可以使用控制器。 控制器itslfmin的一般含義是什么? 對,它是一個構造函數。 這里的主要詞是功能 一般起什么作用? 在其中運行代碼。

因此,只需將您的初始邏輯放在控制器代碼的開頭即可(但不將其包裝為單獨的函數),它將立即運行,您的控制器將由角度解析器解析。

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