SORU
18 EYLÜL 2013, ÇARŞAMBA


yeniden açın ve zaten önyüklenen bir uygulama bağımlılıkları Ekle

Bir şekilde zaten önyüklenen açısal modülü için geç bir bağımlılık enjekte var mı? Demek istediğim şey şu:

Site-geniş açılı bir uygulamam var ki, olarak tanımlanır:

// in app.js
var App = angular.module("App", []);

Ve her sayfa:

<html ng-app="App">

Daha sonra, mantık eklemek için uygulamayı yeniden açıyorum Geçerli sayfayı ihtiyaçlarına göre:

// in reports.js
var App = angular.module("App")
App.controller("ReportsController", ['$scope', function($scope) {
  // .. reports controller code
}])

Şimdi, isteğe bağlı mantık bit bir tane de kendi bağımlılıklar (*11, *, ngResource, **12 vb gibi) gerektirir ki. Nasıl temel App bunları ekleyebilir miyim? Bu çalışmıyor:

// in reports.js
var App = angular.module("App", ['ui.event', 'ngResource']); // <-- raise error when App was already bootstrapped

Önceden her şeyi yapabileceğimi biliyorum ben.e -

// in app.js
var App = angular.module("App", ['ui.event', 'ngResource', 'ngAnimate', ...]);

Ya da kendi başına her modül tanımlamak ve ana app içine her şeyi (see here for more) enjekte sonra:

// in reports.js
angular.module("Reports", ['ui.event', 'ngResource'])
.controller("ReportsController", ['$scope', function($scope) {
  // .. reports controller code
}])

// in home.js
angular.module("Home", ['ngAnimate'])
.controller("HomeController", ['$scope', '$http', function($scope, $http){
  // ...
}])

// in app.js, loaded last into the page (different for every page that varies in dependencies)
var App = angular.module("App", ['Reports', 'Home'])

Ama bu Uygulama her zaman geçerli sayfanın bağımlılıkları ile başlatmak gerekir.

Ben tercih için vardır temel app.js her sayfa ve sadece tanıtmak gerekli uzantıları için her sayfa (reports.js, home.js, vs.), kalmadan gözden geçiriniz önyükleme mantık her ne eklemek veya kaldırmak bir şey.

Bir şekilde Uygulaması zaten önyüklenen olduğunda bağımlılıkları tanıtmak var mı? Bunu yapmak için çevirebilen bir yol (veya yolu) olarak kabul edilir? İkinci çözüm doğru eğilerek değilim, ama eğer tarif ettiğim şekilde de yapılabilir diye bakmak istedim. teşekkürler.

CEVAP
4 ŞUBAT 2015, ÇARŞAMBA


Bu şekilde çözdüm:

uygulamayı yeniden referans:

var app = angular.module('app');

sonra itme gereksinimleri diziye yeni gereksinimleri:

app.requires.push('newDependency');

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bigapplemagic

    Bigapplemagi

    22 EYLÜL 2011
  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • TheXiaxue

    TheXiaxue

    3 AĞUSTOS 2009