ng-model在ui bootstrap模态窗口和角度内不起作用

时间:2014-09-19 17:58:10

标签: angularjs twitter-bootstrap angular-ui angular-ui-bootstrap

我使用角度和引导ui

使用此模态窗口
<script type="text/ng-template" id="myModalContent.html">
            <div class="modal-header">
                <h3 class="modal-title">Cambia Palmare {{descPalmare}} ( {{descProgetto}} )</h3>
            </div>
            <div class="modal-body">
                <ul>
                    <li >
                        <select id="soluzioneDlg" name="soluzioneDlg"
                                class="required"
                                ng-options="soluzione.id as soluzione.denominazione for soluzione in soluzioni"
                                ng-model="soluzioneCorrente"
                                ng-change="filtroSoluzione()"></select>
                    </li>
                        <select id="progettoDlg" name="progettoDlg"
                                class="required"
                                ng-options="progetto.id as progetto.denominazione for progetto in progetti"
                                ng-model="progettoCorrente"></select>
                    <li>

                    </li>
                </ul>
            </div>
            <div class="modal-footer">
                <button class="btn btn-primary" ng-click="ok()">OK</button>
                <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
            </div>
        </script>

我正确打开对话框并正确填写了soluzioneDlg选项 更改选择后,将正确调用filtroSoluzione方法,但使用ng-model绑定的范围变量未定义。

    $scope.filtroSoluzione = () => {
        alert($scope.soluzioneCorrente);
        var progettoPromise = progetti.progettiSoluzione($scope.soluzioneCorrente);
        progettoPromise.then(function (progetti: Factories.Progetto[]) {
            $scope.progetti = progetti;
        },
            function (reason) {
                alert('errore in recupero lista dispositivi: ' + reason);
            }, function (update) {
                alert('Got notification: ' + update);
            });

    }

我错过了什么吗?我在其他页面中使用此代码并且工作正常 谢谢,
  卢卡

这是调用$ modal.open

的角度代码
    // cambia assegnazione, apro la finestra di assegnazione
    $scope.cambiaAssegnazione = (palmare: number) => {

        var modalInstance = $modal.open({
            templateUrl: 'myModalContent.html',
            controller: assegnaDispIspettoreDialog,
            size: '(large)',
            resolve: {
                palmareDaAggiornare: function () {
                    return palmare;
                },
                dispositivi: function () {
                    return dispositivi;
                },
                soluzioni: function () {
                    return soluzioni;
                },
                progetti: function () {
                    return progetti;
                }
            }
        });

        modalInstance.result.then(function (selectedItem) {
            $scope.selectedItem = selectedItem;
        }, function () {
            alert('Modal dismissed at: ' + new Date());
        });
    }

当我单击列表中的链接时,mg_chnage更改了打开对话框的代码:在解析中我发送了我创建的一些服务的引用,因为我必须在模式对话框中填充列表框。
正确处理 descPalmare descProgetto soluzioni 范围属性:唯一的问题出在 soluzioneCorrente 成员

我在这里创建了完整的复制品:
http://plnkr.co/edit/G8qygJWkYCqiYZK5FcgN

1 个答案:

答案 0 :(得分:0)

模态使用子范围,请参阅Understanding Scopes in the Angular.js Wiki。尝试将页面和模式中的ng-model更改为model.soluzioneCorrente,并将scope的{​​{1}}属性设置为当前$modal.open

http://plnkr.co/edit/h3HIeM7oDwo42LK3CZie?p=preview