2013-06-10 2 views
2

Мне нужна помощь в определении проблемы в моем коде. Angular.js является обязательным вводом значения с ng-model для меня, что не то, что я хочу. У меня есть угловой повторитель с нг-включает в себя, как это:Угловое значение во вводе, привязанное к переменной модели

<div ng-repeat='item in items'> 
    <label>{{item.number}}</label> 
    <div ng-include='item.template'></div> 
</div> 

Включенный шаблон элемента представляет собой простое поле ввода, в основе item.template. Проблемные теги: < textarea> и < input> для меня.

Т.е. я включаю это:

<input type="text" ng-model="item.number" /> 

Элемент выглядит следующим образом:

{ 
    number: 1 
    , template: 'text' 
    , text: 'Some text' 
    , value: 'Some value' 
} 

Так что, когда дело выше делает, я получаю

<input type="text" ng-model="item.number" class="ng-scope ng-pristine ng-valid"> 

Но проблема заключается в том, что в мое поле ввода, у меня есть номер позиции как значение, и если я изменю значение, моя метка также изменяется. Даже если я положил value = "" или placeholder = "blah", я до сих пор получаю такое поведение.

У меня пока еще нет такой возможности, но я полагаю, что модель также обновляется с номером.

Что я там делаю неправильно?

+0

это то, что, как ожидается, сво 2 способ для передачи данных с обязательными – Atrix1987

+0

@ Atrix1987 Спасибо, что это было :) Я, вероятно, следует поставить «имя» = item.number "и привязать ng-модель к чему-то дополнительно – Zlatko

ответ

1

очевидно, {{item.number}} привязан к вашему предметному объекту (двухсторонняя привязка FTW! :-)). Если вы хотите, чтобы метка была настроена при рендеринге и осталась неизменной, тогда в вашем контроллере вы должны создать другое поле в каждом элементе под названием «originalNumber» и привязать свои метки к этому полю.

+0

Nah, в основном то, что мне нужно было input name =" item.number "ng-model =" что-то еще, чтобы получить крючок на " – Zlatko

+0

О, я думал, вы хотите сохранить поле редактируется, но имеет неизменяемую метку (заполненную исходным значением поля). –

+0

Нет, я был просто глупым :) – Zlatko

4

Угловой создает двустороннее связывание между моделью и входными элементами, когда используется ng-model. Любые изменения в модели обновляют входной элемент (поведение по умолчанию для всех привязок) и любые изменения, внесенные в элемент ввода пользовательского интерфейса, обновляют модель.

Чтобы избавиться от этого поведения вы можете

<input type="text" value='{{item.number}}' class="ng-scope ng-pristine ng-valid">