为什么 ng-model 不更新控制器值 select?
Why ng-model does not update controller value select?
这是代码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>
这是代码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 :(
});
在视图中,每次更改 select 时都会更新新值,但控制器不会更新 select 的当前值。我该怎么办?
谢谢!
要更新或更改控制器内的值,您可以在其上编写 ng-change
函数。然后你可以检查控制器中的更新值。
标记
<select ng-model="selectedItem" ng-options="item.name for item in items"
ng-change="changeSelectedItem()">
</select>
代码
$scope.changeSelectedItem = function(){
console.log($scope.selectedItem);
}
其他方式可能是您可以在某处对 html 使用 {{selectedItem}}
。这也将提供有关 selectedItem
值如何更新的想法。
因为你总是取控制器中数组的第一项,
$scope.selectedItem = $scope.items[0];
console.log($scope.selectedItem);
像这样改变你的JS,
$scope.changeSelectedItem = function(){
console.log($scope.selectedItem);
}
并且视图使用 ng-change 获取所选项目
<select ng-model="selectedItem" ng-options="item.name for item in items"
ng-change="changeSelectedItem()">
</select>
这是代码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>
这是代码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 :(
});
在视图中,每次更改 select 时都会更新新值,但控制器不会更新 select 的当前值。我该怎么办?
谢谢!
要更新或更改控制器内的值,您可以在其上编写 ng-change
函数。然后你可以检查控制器中的更新值。
标记
<select ng-model="selectedItem" ng-options="item.name for item in items"
ng-change="changeSelectedItem()">
</select>
代码
$scope.changeSelectedItem = function(){
console.log($scope.selectedItem);
}
其他方式可能是您可以在某处对 html 使用 {{selectedItem}}
。这也将提供有关 selectedItem
值如何更新的想法。
因为你总是取控制器中数组的第一项,
$scope.selectedItem = $scope.items[0];
console.log($scope.selectedItem);
像这样改变你的JS,
$scope.changeSelectedItem = function(){
console.log($scope.selectedItem);
}
并且视图使用 ng-change 获取所选项目
<select ng-model="selectedItem" ng-options="item.name for item in items"
ng-change="changeSelectedItem()">
</select>