AngularJS의 ng-repeat 루프 내부에 ng-model 바인딩


94

ng-repeat 루프 내에서 범위 문제를 처리하려고합니다. 몇 가지 질문을 살펴 봤지만 코드가 제대로 작동하지 않습니다.

컨트롤러 코드 :

function Ctrl($scope) {
  $scope.lines = [{text: 'res1'}, {text:'res2'}];
}

전망:

<div ng-app>
     <div ng-controller="Ctrl">
       <div ng-repeat="line in lines">
           <div class="preview">{{text}}{{$index}}</div>

       </div>
       <div ng-repeat="line in lines">
           <-- typing here should auto update it's preview above -->
           <input value="{{line.text}}" ng-model="text{{$index}}"/>
            <!-- many other fields here that will also affect the preview -->
       </div>
     </div>
    </div>

여기 바이올린이 있습니다 : http://jsfiddle.net/cyberwombat/zqTah/

기본적으로 여러 줄의 텍스트를 포함하는 개체 (전단지 생성기)가 있습니다. 각 텍스트 줄은 사용자 (텍스트, 글꼴, 크기, 색상 등)가 조정할 수 있으며 미리보기를 만들고 싶습니다. 위의 예는 텍스트를 입력하기위한 입력 필드 만 표시하며 자동으로 / 입력 할 때 미리보기 div를 업데이트하고 싶지만 더 많은 컨트롤이 있습니다.

루핑 인덱스에 대한 코드가 올바른지 확실하지 않습니다. 루프 내부에서 ng-model 이름을 만드는 가장 좋은 방법입니까?


1
바이올린은 작동하지 않습니다 ..
philx_x

답변:


116

ng-repeat 루프의 각 반복에 대해 line배열의 객체에 대한 참조입니다. 따라서 값을 미리 보려면 {{line.text}}.

마찬가지로 텍스트에 데이터 바인딩하려면 동일한 데이터 바인딩 : ng-model="line.text". valueng-model 을 사용할 때 사용할 필요가 없습니다 (실제로는 안됩니다).

바이올린 .

범위 및 ng-repeat에 대한 자세한 내용은 AngularJS에서 범위 프로토 타입 / 프로토 타입 상속의 뉘앙스는 무엇입니까?를 참조하세요. , 섹션 ng-repeat .


이 코드의 e2e 테스트는 어떻습니까? 모델이 동적 인 경우 입력을 선택하는 방법을 의미합니까?
devmao

1
그러면 반복되는 항목이 객체 여야합니까? 즉, $ scope.lines = [ 'a', 'b', 'c']?
berto 2014 년

2
@berto, 예, 객체 여야합니다. 이것은 링크 된 참조 "스코프 프로토 타입의 뉘앙스 ..."에서 논의됩니다.
Mark Rajcok 2014 년

비슷한 ng-repeat / ng-model 문제가 있습니다. 조사를 좀 해봤는데 거의 다 된 것 같아요. 누구든지 볼 수 있다면 정말 감사하겠습니다. stackoverflow.com/questions/32855575/…
user1532669 '152015-09-30

2
<h4>Order List</h4>
<ul>
    <li ng-repeat="val in filter_option.order">
        <span>
            <input title="{{filter_option.order_name[$index]}}" type="radio" ng-model="filter_param.order_option" ng-value="'{{val}}'" />
            &nbsp;{{filter_option.order_name[$index]}}
        </span>
        <select title="" ng-model="filter_param[val]">
            <option value="asc">Asc</option>
            <option value="desc">Desc</option>
        </select>
    </li>
</ul>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.