如何在模态窗口中处理来自另一个控制器的数据?

时间:2016-09-02 13:46:30

标签: javascript angularjs ecmascript-6 angular-strap

我有一个问题,我如何从控制器获取数据并将其放入另一个控制器的范围内,这是一个模态窗口......

我会解释:

这是我的事件,它打开对话窗口(angular-strap模态):

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>

当我使用webpack时,我使用main index.js中的指令初始化模块

这是我的指令模板的一个小例子:

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

这是我的另一个控制器:

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

    this.$scope = $scope;

    this.num = 10;
}

因此,正如您所看到的那样,跨度中将有10个,我还需要从另一个控制器获取数据,这些控制器存储即数据= [&#39; asd&#39;,&#39; apple&#39; ]。等等

还有更好的办法吗?

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你可以通过在模态选项中添加范围,将范围从父控制器传递到模态。见下文:

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

这就是你要问的一切吗?

答案 1 :(得分: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.
})