[英]javascript execution order with AngularJS
我將要維護其他人的網站,並且發現了這樣的代碼塊(為了簡化代碼示例,我刪除了丟失的代碼)
var Application = (function ($, global) {
'use strict';
global.site = global.site || {};
global.site.App = App;
function App() {
// code removed
}
App.getState = function () {
return 'standard';
};
App.setState = function () {
// Set current state on load
site.App.currentState = site.App.getState();
};
//a lot of code was removed
return {
init:function(){
global.site.app = new global.site.App();
// Set browser sate on load
site.App.setState();
console.log('Application: site.App.currentState', site.App.currentState);
}
}
}(window.jQuery, window));
$(Application.init);
var siteApp = angular.module('siteApp', []);
siteApp.controller('AppController', function() {
console.log('AppController: site.App.currentState', site.App.currentState);
});
問題是,即使我把var Application = (function ($, global) {...}(window.jQuery, window));
在angularjs模塊上方,angularjs模塊首先運行。 而且我不得不承認我沒有完全理解var Application ...設計模式的工作方式,所以我的問題是:
任何幫助表示贊賞。
您可以嘗試刪除
$(Application.init)
和直接呼叫
Application.init()
A)該代碼過於復雜,應將其移至Angular服務/值/工廠
B)要管理代碼順序,您還可以刪除ng-app="App"
並自行引導Angular:
angular.element(document).ready(function () {
Application.init();
angular.bootstrap(document, ['App']);
}
C)該代碼使用模塊模式,例如http://toddmotto.com/mastering-the-module-pattern
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.