2013-04-05 3 views
0

여러 가지 기술을 포함 할 수있는 문자가 있습니다. 주입 된 서비스에서 기술을 사용할 수 있습니다. 내가 기본적으로 원하는 것은 이것이다 : 나는 그것을 기대하는 것처럼이 코드각도 js ngOptions로 선택하기위한 객체 배열

<div ng-repeat="skill in character.getSkills()"> 
    <select ng-model="skill" ng-options="select as s.toString() for s in getAllSkills()"></select> 
    <button ng-click="character.removeSkill(skill)" >Remove Skill</button> 
</div> 

, 선택 상자가 작동하지 않습니다. 캐릭터에 스킬이 설정되어 있지 않으며 선택 항목이 드롭 다운에 저장되지 않습니다.

내가 누락 된 항목이 있습니까? 사전에

감사합니다, 뢰머

+1

ng-의 각 반복을 repeat는 자체 (자식) 범위를 만듭니다. 그러므로'ng-mode = "skill"은'character'가 정의 된 범위가 아니라 자식 스코프에'skill' 프리미티브 속성을 생성합니다. 몇 가지 아이디어는 http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-protypical-inheritance-in-angularjs/14049482#14049482 (섹션 ng-repeat)를 참조하십시오. –

+0

훌륭한 글씨체, 이것을 지적 해 주셔서 감사합니다. 필자가 얻지 못하는 것은, 필자의 경우 스킬이 객체이고 원시적이 아니라는 것이다. 그래서 ngrepeat의 스킬이 캐릭터 스킬을 참조해서는 안됩니다 ..? – roemer

+0

죄송합니다. 각 스킬이 하나의 객체라는 것을 알지 못했습니다. (다음 번에 더 많은 코드를 포함시키는 것이 도움이 될 것입니다.) –

답변

1

모든 후, 나는 자식 범위는 $ index 속성에 의해 character.skills 배열의 기술을 참조하고 있습니다 :

<select ng-model="character.skills[$index]" ng-options="sk as sk.toString() for sk in getAllSkills()"></select>