Вложенный список и правильные ng-модель и ng-значение в AngularJS 1.5.x

0

У меня есть вложенный список/массив в AngularJS как:

$scope.myCars = [
    name: 'Audi', types: [
        {name: 'A4', price: '150000'},
        {name: 'A6', price: '250000'},
        {name: 'A8', price: '350000'}
    ],
    name: 'BMW', types: [
        {name: 'M1', price: '250000'},
        {name: 'M3', price: '450000'}
    ]
];

Я перебираю список и создаю DOM:

<ul>
    <li ng-repeat="car in MyCars">
        {{car.name}}:
        <ul>
            <li ng-repeat="type in car.types">
                {{type.name}}:
                <input ng-model="type.name" ng-value="type.price">
            </li>
        </ul>
    </li>
</ul>

Он показывает все правильно, но когда я обновляю цену во входном поле, мои $ watch в $ scope.myCars меняют type.name вместо type.price - это неправильно.

Правильно ли я делаю, или?

  • 0
    Вы можете добавить код контроллера.
  • 1
    Typo: ng-model="type.name" должно быть ng-model="type.price" . Вам не нужно устанавливать ng-value .
Показать ещё 1 комментарий
Теги:

2 ответа

2
Лучший ответ

Вы используете ng-model="type.name" который устанавливает двустороннюю привязку данных между значением этого входа и type.name. Если вы хотите, чтобы привязка данных к type.price использовала это вместо этого:

<input ng-model="type.price">

Здесь не ng-value потому что оно не работает с ng-model для одного и того же элемента ввода текста, поскольку ng-model переопределяет значения из ng-value.

Примечание. ng-value не предназначено для <input type="text">, это означает <input type="radio"> или option.

1

вам не нужно ng-значение с ng-моделью. изменить это

  <input ng-model="type.name" ng-value="type.price">

в

  <input ng-model="type.price" >

Ещё вопросы

Сообщество Overcoder
Наверх
Меню