मैं बहुत तरह नियंत्रकों लोड करना चाहते हैं:रजिस्टर lazyloaded नियंत्रक AngularJS
.state({
name: 'app.search',
url: 'search?q&opts',
templateUrl: '/templates/search.html',
controller: 'SearchCtrl',
resolve: {
deps: function($util){
return $util.load(['/ctrl/SearchCtrl.js']);
}
}
})
नियंत्रक भार लेकिन मैं निम्नलिखित त्रुटि मिलती है, मुझे विश्वास है कि प्रमुख नियंत्रक पंजीकृत नहीं किया गया था:
Argument 'SearchCtrl' is not aNaNunction, got undefined
तो मेरा सवाल यह है कि, मैं इसे दिखाए जाने पर आलसी लोड करते समय नियंत्रक को पंजीकृत करने के बारे में कैसे जाउंगा।
नियंत्रक के रूप में परिभाषित किया गया है:
app.module('app').controller('SearchCtrl',function(){
});
क्या मैं नियंत्रक के लिए मजबूर कर सकते हैं पंजीकृत होने के लिए है?
संपादित करें एपीपी पहले से ही तैयार है और सभी काम ठीक हैं। यह प्रश्न केवल लॉजिंग करने के लिए है।
समस्या बिल्कुल परिभाषित है, नियंत्रक पंजीकृत नहीं है क्योंकि बूटस्ट्रैपिंग प्रक्रिया पहले ही चल चुकी है। जब मैं आलसी लोड हो जाता हूं तो मैं नियंत्रक को पंजीकृत करने के लिए कुछ रास्ता ढूंढ रहा हूं।
load: function(){
if(arguments.length > 1){
var items = arguments;
}else{
var items = arguments[0];
}
var _self = this;
return $q(function(resolve,reject){
if(items.length == 0){
return resolve();
}
_self.async(items, function(item,next){
if(item.indexOf('.js') != -1){
_self.loadOne('script',item,next,function(err){
next(err);
});
}
else if(item.indexOf('.css') != -1){
_self.loadOne('link',item,next);
}else{
next();
}
},function(errors,results){
$timeout(function() {
$rootScope.$apply();// @Claies suggestion
if(errors){
reject(errors);
}else{
resolve();
}
});
});
});
},
क्या आपके पास एक मॉड्यूल अलग से घोषित किया गया है? – Sajeetharan
ऐप मॉड्यूल? बेशक। यह ऐप पहले ही बनाया गया है, लेकिन सभी कोड एक ही फाइल में हैं। मैं अलग-अलग फाइलों और lazyload – r3wt
में सभी कोड को विभाजित करने की कोशिश कर रहा हूं, आपको अपने लोडर लोड के बाद '$ rootScope। $ लागू()' * का उपयोग करना होगा और आपके कंट्रोलर फ़ाइल को निष्पादित करना होगा लेकिन * पहले * संकल्प वापस आ जाएगा। आप इस कार्य के लिए डिज़ाइन किए गए मॉड्यूल का भी उपयोग कर सकते हैं, जैसे oc-lazyLoad। https://oclazyload.readme.io/docs/with-your-router – Claies