我确信我一定做错了,但是:
我有一个存储项目ID的对象。我也有一系列这些项目。我需要一个'select'来代表当前选中的项目,但也可以更改所选项目。
我已将'select的模型设置为object.selectId。 'select'ng-options是“option.Text for options in options track in optionId”
然而,模型和'选择'选项类型不匹配
我如何实现我的需要?
这是我正在做的事情的小提琴:https://jsfiddle.net/vb2xe1mc/5/
代码:
<script>
angular.module('myApp', [])
.controller('myctrl', ['$scope', function($scope) {
$scope.item = {
id: 1
};
$scope.options = [
{Text: "zero", Id: 0},
{Text: "one", Id: 1},
{Text: "two", Id: 2},
{Text: "three", Id: 3}
];
$scope.selectChange = function() {
alert($scope.item.id);
};
}]);
</script>
<div ng-app="myApp">
<div ng-controller="myctrl">
<select ng-model="item.id" ng-options="option.Text for option in options track by option.Id" ng-change='selectChange()'>
</select>
</div>
</div>
如果可以,请告诉我出错的地方或纠正小提琴。
谢谢^ _ ^ 安迪
澄清: 模型项已选择id 1。在这种情况下,我需要列表预先选择id为1的选项。此外,选择该选项时,它不会将item.id设置为int,而是将其设置为整个选项。我需要它将item.id设置为option.Id
答案 0 :(得分:0)
将选择绑定到a2enmod headers
,而不是ng-model="item"
。
同时决定ng-model="item.id"
与id
Id
请点击此处查看固定版本:https://jsfiddle.net/ax3k418p/
答案 1 :(得分:0)
https://jsfiddle.net/vb2xe1mc/10/
您需要将item
绑定到ng-model
,并且初始$scope.Id
应设置为1
而不是$scope.id = 1
同时检查提醒时间应为alert($scope.item.Id);
<div ng-app="myApp">
<div ng-controller="myctrl">
<select ng-model="item" ng-options="option.Text for option in options" ng-change='selectChange()'>
</select>
</div>
</div>
JS:
angular.module('myApp', [])
.controller('myctrl', ['$scope', function($scope) {
$scope.item = {
Id: 1
};
$scope.options = [{
Text: "zero",
Id: 0
}, {
Text: "one",
Id: 1
}, {
Text: "two",
Id: 2
}, {
Text: "three",
Id: 3
}, ];
$scope.selectChange = function() {
alert($scope.item.Id);
};
}]);
答案 2 :(得分:0)
<select ng-model="item.id" ng-options="option.id as option.Text for option in options" ng-change='selectChange()'>
您想要选择option.id
,而不是option
,并且track by
是不必要的。