Angularjs不会将范围变量与函数绑定?

时间:2015-01-23 04:00:29

标签: angularjs

当我更改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";
    }
}

jsfiddle

为什么不使用我的范围变量更新范围?首次加载和任何选择更改时,它始终为空。

1 个答案:

答案 0 :(得分:0)

你的问题在于你的getName函数看看这个小提琴

http://jsfiddle.net/nwtjdffc/

基本上我只是用

替换你的功能
$scope.getName = function(id) {
   return ($scope.cs.filter(function(item){ 
       return item.id==id})[0]||{}).name
}