2015-01-23 2 views
1

Angular가로드 할 때와 선택 옵션을 변경할 때 범위 변수를 바인딩하지 않는 것 같습니다. 나는 선택 요소에서 현재 선택된 ID를 가지고 있고, 나는 옆에있는 이름을 표시하려면 :Angularjs는 범위 변수를 함수와 바인딩하지 않습니까?

<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

왜 범위 내 범위 변수로 업데이트하지 않는 이유는 무엇입니까? 처음로드 할 때와 선택 변경시 항상 null입니다.

답변

0

문제는 난 그냥 왜`대해 forEach()가`를 반환하지 않습니다

$scope.getName = function(id) { 
    return ($scope.cs.filter(function(item){ 
     return item.id==id})[0]||{}).name 
} 
+0

와 함수로 교체 lookt에게이 바이올린

기본적으로

http://jsfiddle.net/nwtjdffc/

을 당신의 getName 기능에있다 이름? 나는 내 이름 문자열로 getName()을 종료 할 것이라고 생각했다. – fanhats

+0

foreach 콜백에서 이름 만 반환하는 함수에서 항상 NULL을 반환하지만 그 함수 결과는 현재 함수로 전파되지 않습니다. 여기 foreach를 사용할 수있는 방법이 있습니다. http://jsfiddle.net/mxvaqfs3 / –

관련 문제