2016-09-02 18 views
0

我有一個關於我如何從控制器獲取數據,並把它變成另一種控制器,它是模態窗口的範圍問題...如何在模態窗口中使用另一個控制器的數據?

我將解釋:

這裏是我的情況下,這將打開對話窗口(角帶模式):

openDialog() { 
    this.$modal({ 
     show: true, 
     html: true, 
     placement: 'center', 
     type: 'large', 
     templateUrl: 'tmpl.html', 
     controller: myController 
    }); 
} 

這是我的模態窗口模板(tmpl.html):

<div class="modal-body" id="modal-body"> 
    <my-directive></my-directive> 
</div> 

,因爲我用網絡包,我在主index.js

這是我的一個指令模板的一個小例子初始化模塊與我的指令:

<span class="some-name">{{$ctrl.num}} </span> 

這裏是我的另一個控制器:

constructor($scope) { 
    super($scope); 

    this.$scope = $scope; 

    this.num = 10; 
} 

所以,正如你所看到的那樣,在這個範圍內會有10個,我還需要從另一個控制器獲取數據,這個控制器存儲着數據= ['asd','apple'];等等

有沒有更好的辦法呢?

回答

0

如果我正確理解您的問題,您可以通過向您的模式選項添加範圍,將作用域從父控制器傳遞到模態。見下:

this.$modal({ 
     show: true, 
     html: true, 
     placement: 'center', 
     type: 'large', 
     templateUrl: 'tmpl.html', 
     controller: myController, 
     scope: $scope 
    }); 

這就是你所問的嗎?

+0

肯定的是,我已經試過了,但根本沒有幫助=( – Costa

+0

{{$ ctrl.num}}顯示10?我不能t從你的問題出發。 – defaultcheckbox

+0

是的,它顯示10 – Costa

0

可以使用resolve財產modal

openDialog(){

this.$modal({ 
     show: true, 
     html: true, 
     placement: 'center', 
     type: 'large', 
     templateUrl: 'tmpl.html', 
     controller: myController, 
     resolve : { 
      objData{ 
      dataFromCtrl : $scope.dataFromAnoterCtrl// you can fetch data here either from parent scope or factory/service. 
     } 
     } 

    }); 
} 

然後在myController,就可以得到這個數據

.controller('myController',function(objData){ 
    console.log(objData.dataFromCtrl); // you can get data from another controller in this modal controller. 
}) 
+0

感謝您的回答,但我需要更新此數據,因爲它是從服務器加載一段時間間隔(因爲數據可以隨時更新)...並且只有當窗口再次打開時纔會更新它 – Costa

相關問題