[英]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.