0

次のコード スニペットは、$modal.open() に使用されるコントローラーです。ok 関数が、データ バインディングによって変更された最新のデータを取得できない理由がわかりません。

myModule.controller('ModalCtrl', function($scope, $modalInstance) {

    $scope.job = 'student'; // changed by html radio button, default is 'student'

    // called by a button with ng-click="ok()" in modal view
    $scope.ok = function() {

        // no matter what job i changed, the $scope.job always is default value 'student'
        $modalInstance.close({
            selected_job : $scope.job
        });
    };
});

これがhtmlスニペットです

<script type="text/ng-template" id="sendToModal.html">
<div>
        <div class="modal-header">
            <h4>Job</h4>
        </div>
        <div class="modal-body">
            <label class="radio-inline">
                <input type="radio" name="jobOption"
                    data-ng-model="job"
                    data-ng-value="student">Student
            </label>
            <label class="radio-inline">
                <input type="radio" name="jobOption"
                    data-ng-model="job"
                    data-ng-value="teachch">Teacher
            </label>
        <div class="modal-footer">
            <button class="btn btn-primary" data-ng-click="ok()">Confirm</button>
            <button class="btn btn-warning" data-ng-click="cancel()">Cancel</button>
        </div>
</div>
</script>
4

3 に答える 3

2

問題はスコープにあります。ビューの変更:

data-ng-model="$parent.job"
于 2013-12-18T10:21:43.477 に答える
1

オブジェクトとしてスコープに追加する必要があります。

$scope.job = { 名前 : '学生' }

data-ng-model="job.name"

ここで、例を挙げました: http://plnkr.co/edit/NeUwWNYS8dfyQlrR2xfn?p=preview

于 2013-11-06T16:37:28.047 に答える
0

コードのこの部分にエラーは見られません...関数を除くすべてのバインディングが機能しますか? ctrl、モデルなどを追加しましたか...?あなたはIE8を使っていますか?

たぶんこれを試してください(私にとってはうまくいきます):

// called by a button with ng-click="ok()" in modal view
    ok = function() { ... }
/*--------------------------*/
//in the view call
    onclick="ok();"
于 2013-10-25T07:59:01.623 に答える