AngularJS ui模式传递数据

Posted

技术标签:

【中文标题】AngularJS ui模式传递数据【英文标题】:AngularJS ui modal passing data 【发布时间】:2016-01-30 11:19:17 【问题描述】:

这是ui-select,用户可以在其中选择一个选项:

<ui-select ng-model="state.selected" ng-change="openModal(state.selected,orders.order_id)" ng-if="orders.state == 'Paid'" theme="selectize" ng-disabled="disabled" style="width: 300px;"> .....

只要有变化,就会从引导触发模态

$scope.openModal = function(name,oid)
    $scope.modalInstance = $modal.open(
        templateUrl: 'reservationModal.html',
        scope:$scope,
        name: function()
            return name;
        
    );


$scope.cancel = function()
    $scope.modalInstance.dismiss();


$scope.confirmChg = function()
    console.log('ok...');

模板如下:

<script type="text/ng-template" id="reservationModal.html">
    <div class="modal-header">
        <h3 class="modal-title">Confirmation</h3>
        <!--<button class="btn btn-warning" ng-click="close()">X</button>-->
    </div>
    <div class="modal-body">
        Confirm to change status to name ?

    </div>
    <div class="modal-footer">
        <button class="btn btn-danger" type="button" ng-click="confirmChg(status_oid,status)">Yes</button>
        <button class="btn btn-warning" type="button" ng-click="cancel()" data-dismiss="modal">No</button>
    </div>
</script>

问题是,模板中的name 没有显示。如何从打开的模态函数中传递变量?

【问题讨论】:

我会说通常我们会通过 resolve 方法将数据传递给模态控制器,而不是将 $scope 传递给模态:***.com/questions/18576454/… 【参考方案1】:

你需要在作用域上设置名称,只需添加一行:

$scope.name = name;

在调用 $scope.open 之前。所以 openModal 函数看起来像:

$scope.openModal = function(name,oid)
    $scope.name = name;
    $scope.modalInstance = $modal.open(
        templateUrl: 'reservationModal.html',
        scope:$scope,
        name: function()
            return name;
        
    );

【讨论】:

我在哪里设置的?内部名称函数? 就在openModal的开头。我刚刚澄清了答案。

以上是关于AngularJS ui模式传递数据的主要内容,如果未能解决你的问题,请参考以下文章

angularjs怎么在两个controller之间传递数据

在 Angularjs 中 ui-sref 和 $state.go 如何传递单个多个参数和将对象作为参数

如何使用 Angularjs 传递数据

AngularJS进阶 八 实现页面跳转并进行参数传递

angularjs与vue数据传递

Angularjs 组件 - 包含传递数据