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