Why ng-model does not update controller value select?

那年仲夏 提交于 2019-12-12 10:51:53

问题


This is the code HTML:

<div ng-controller="SelectCtrl">
    <p>selected item is : {{selectedItem}}</p>
    <p> age of selected item is : {{selectedItem.age}} </p>
    <select ng-model="selectedItem" ng-options="item.name for item in items">
    </select>
</div>

This is the code AngularJS:

var app = angular.module('myApp', []);

app.controller('SelectCtrl', function($scope) {
    $scope.items = [{name: 'one', age: 30 },{ name: 'two', age: 27 },{ name: 'three', age: 50 }];
    $scope.selectedItem = $scope.items[0];
    console.log($scope.selectedItem); //it's not update :(
});

in the view the new value updated every time I change the select, but the controller does not update the current value of the select. What should I do?

Thanks!


回答1:


To get updated or change value inside your controller, you could write ng-change function on it. Then you could check the updated value inside controller.

Markup

<select ng-model="selectedItem" ng-options="item.name for item in items"
  ng-change="changeSelectedItem()">
</select>

Code

$scope.changeSelectedItem = function(){
   console.log($scope.selectedItem);
}

Other way could be you could simply use {{selectedItem}} on html somewhere. That will also give an idea about how selectedItem value is updating.




回答2:


Because you are always taking the first item of the array in the controller,

$scope.selectedItem = $scope.items[0];
console.log($scope.selectedItem);

Just change your JS like this,

$scope.changeSelectedItem = function(){
   console.log($scope.selectedItem);
}

And the View use the ng-change to get the selected item

<select ng-model="selectedItem" ng-options="item.name for item in items"
  ng-change="changeSelectedItem()">
</select>


来源:https://stackoverflow.com/questions/32038202/why-ng-model-does-not-update-controller-value-select

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!