2015-02-03 2 views
0

я собираюсь поддерживать чужой сайт, и я нашел блок кода, как это (я удалил потерянным код, чтобы сделать пример кода простого)Javascript порядок выполнения с 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, сначала запускается модуль угловых функций. И я должен признать, что я не в полной мере undenstand как вар Application ... дизайн шаблона работы, поэтому мои вопросы:

  1. Как я могу сделать $ (Application.init); запустить сначала?.
  2. Какой шаблон проектирования является то, что (Application.init), так что я могу Googel его и попытаться понять, что

любой помогает приветствуются.

+1

$ (Application.init); будет выполняться только при полной загрузке документа. Прочтите это http://api.jquery.com/ready/ – Sandeeproop

+0

Вы можете попробовать удалить $ (Application.init) и прямой вызов Application.init() – Sandeeproop

+0

ну, я не понял $() = $ (document). ready (function() {}) = $ (function() {}) ;. Ваше предложение устранило проблему заказа. спасибо Sandeeproop – Mark

ответ

2

Вы можете попробовать удалить

$(Application.init) 

и прямого вызова

Application.init() 
0

A) Этот код является слишком запутанным и, вероятно, следует перенести в угловом сервис/значение/завод

B) Чтобы управлять заказом кода, вы также можете удалить ng-app="App" и загрузочный лоток Угловой:

angular.element(document).ready(function() { 
    Application.init(); 
    angular.bootstrap(document, ['App']); 
    } 

C) Этот код использует шаблон модуля, например. http://toddmotto.com/mastering-the-module-pattern

+0

Ссылка на образец очень информативна. спасибо malix – Mark

Смежные вопросы