使用ng-option选择不更新控制器中的模型

时间:2016-02-23 10:15:25

标签: javascript angularjs

我有以下数组:

[{
  "Id": 3,
  "Name": "A"
 },
 {
  "Id": 3,
  "Name": "B"
 },
 {
   "Id": 3,
   "Name": "C"
 }]

我在以下Angular视图中使用它:

 <select ng-model="selectedCategory" ng-options="category.Name for category in categories"></select>
 <pre>{{selectedCategory | json}}</pre>

 <button type="button" ng-click="move()">Move</button>

控制器看起来像:

var moveCategoryController = function ($scope, category, categoriesService) {

   var getCategories = function () {
    categoriesService.getCategories()
        .success(function (result) {

           $scope.categories = [];

            for (var i = 0; i < result.Results.length; i++) {
                var cat = result.Results[i];
                if (cat.Id !== category.Id) {
                    $scope.categories.push(cat);
                }
            }

            $scope.selectedCategory = $scope.categories[0];
        })
        .error(function () {
            $scope.errorMessage = "There was a problem loading the categories.";
        });
    };

    getCategories();


    $scope.move = function () {
         alert($scope.selectedCategory.Name);
    };

 }

 bpApp.controller("moveCategoryController", moveCategoryController);

有关信息,注入控制器的category对象是一个类别对象(控制器正在模态中使用,类别从父页面传递给它)。

问题

加载时,选择绑定到数据正常,当用户更改选择列表时,<pre>内容将使用新选择的类别正确更新。

问题是当我单击Move按钮(调用控制器作用域上的move()函数)时,作用域的selectedCategory属性尚未更新。例如,如果我选择类别“B”,警报仍会弹出“A”。

因此,似乎ng-model在视图中更新,但在控制器中没有更新?!

0 个答案:

没有答案