为什么$ scope变量没有更新?

时间:2014-05-21 15:53:58

标签: angularjs

我的范围变量有问题。当我打开表单时,内容在输入字段中正确显示。但是当我更改它们并且ok函数触发时,不会显示更改。相反,我得到form.name的内容。为什么范围不是由输入字段的ng-model更新?

app.controller('updateFormCtrl', function( $scope, $modalInstance, APIService, form) {

    $scope.name = form.name;


$scope.ok = function() {

    alert($scope.name)

};

});

查看:

<div class="col-sm-10"><input ng-model="name" type="text" class="form-control" placeholder="Categorie"></div>

编辑:这是另一个控制器:

$scope.updateForm = function( form ) {

        var modalInstance = $modal.open({

            templateUrl: 'views/modals/updateForm.html',
            controller: 'updateFormCtrl',
            resolve: {

                form: function() { 

                    return form;

                }

            }

        });

        modalInstance.result.then(function() {

            $scope.categories =  APIService.query({ route:'category' });

        });
    };

编辑2:

 <div class="modal-footer">

        <button type="button" class="btn btn-default" ng-click="cancel()">Abbrechen</button>
        <button type="button" class="btn btn-primary" ng-click="ok()">Speichern</button>

    </div><!-- /.modal-footer -->

2 个答案:

答案 0 :(得分:0)

这是因为$scope.ok未在updateFormCtrl内定义。基本上,您的ok()无法读取您在文本框中所做的更改。

尝试在控制器内移动$scope.ok

app.controller('updateFormCtrl', function( $scope, $modalInstance, APIService, form) {

$scope.name = form.name;
$scope.ok = function() {

alert($scope.name)

};

});

答案 1 :(得分:0)

我认为这是解决方案:

https://egghead.io/lessons/angularjs-the-dot