1

我有一個控制器使用的模式視圖(與銳銳)。在某些時候,我想用自定義視圖(而不是模態)使用此控制器。所以一切都很好,除了解析變量(發送給控制器的變量)。使用模式ng控制器作爲常規控制器

我把這樣的模式:

var modalInstance = $modal.open({ 
     templateUrl: 'myModal.html', 
     controller: 'modalCtrl', 
     size: 'lg', 
     resolve: { 
      variable: function(){ 
       return myVar; 
      } 
     } 
    }); 

我如何從JavaScript(或HTML)發送變量?

這是我如何引導我的自定義視圖(custom.html):

angular.element($(document.body)[0].children[0]).attr('ng-controller','modalCtrl'); 
angular.bootstrap(document.body, [ 'myApp' ]); 

回答

1

一種方式做,這將是定義一個服務或與你的決心同名(在此值variable案件)。然後Angular會爲你找到依賴並注入它。

您可能不希望始終定義此服務/值。所以,你可能在一個模塊中定義該服務/價值,當你引導的應用程序,然後有條件地加載模塊:

if (someCondition) { 
    angular.module('use.me.conditionally', []).value('variables', 123); 
    angular.element($(document.body)[0].children[0]).attr('ng-controller','modalCtrl'); 
    angular.bootstrap(document.body, ['myApp', 'use.me.conditionally']); 
} else { 
    angular.bootstrap(document.body, ['myApp']); 
} 

編輯:

可以使用value()service()功能申報注射有很多屬性的對象:

var foo = { property1: 'abc', property2: 456 }; 
angular.module('use.me.conditionally',[]) 
    .value('variablesAsAValue', foo) 
    .service('variablesAsAService', function() { return foo; }); 

注意,你不需要兩個value()service(),我只是展示兩種方法。 value()通常用於常量類型的變量,而服務通常是對象/類。

+0

謝謝,但我怎麼能添加多個變量?我應該爲每個變量更改值的名稱(use.me.conditionally)嗎?我可以將它們全部放入一次或將它們添加到循環中嗎? – ncohen 2015-02-10 09:23:16

+0

@ncohen我會編輯我的答案,你可以使用'value()'或'service()'方法傳遞一個對象。 – 2015-02-10 10:00:37

+0

@ncohen另外,不要太擔心模塊(在我的例子'use.me.condtionally'),你並不需要額外的模塊。你可以使用你現有的'myApp'模塊。如果您有時不想使用此模式控制器,並且因此不需要該值/服務,我只提出了一個單獨的模塊。 – 2015-02-10 10:10:24