当我更改select选项时,Angular似乎没有在加载时绑定我的范围变量。我有select元素中当前选择的id,我想在它旁边显示名称:
<div ng-app>
<h2>Todo</h2>
<div ng-controller="TodoCtrl">
<select ng-model="myid" ng-options="c.id as c.name for c in cs"></select>
<span ng-bind="getName(myid)"></span>
</div>
</div>
function TodoCtrl($scope) {
$scope.myid = 1;
$scope.cs = [ {id:1, name:'one'},
{id: 2, name:'two'},
{id: 3, name: 'three'}];
$scope.getName = function(id) {
angular.forEach($scope.cs, function(c, index) {
if(c.id == id)
return c.name
});
return "NULL";
}
}
为什么不使用我的范围变量更新范围?首次加载和任何选择更改时,它始终为空。
答案 0 :(得分:0)
你的问题在于你的getName函数看看这个小提琴
基本上我只是用
替换你的功能$scope.getName = function(id) {
return ($scope.cs.filter(function(item){
return item.id==id})[0]||{}).name
}