2

コードの問題を特定するのに助けが必要です。Angular.js は入力ng-modelにバインドしていますが、これは私が望んでいるものではありません。次のような ng-include を含む角度リピーターがあります。

<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"を入れても、この動作は引き続き発生します。

私はまだそこまで行っていませんが、モデルも番号で更新されていると思います。

私はそこで何が間違っていますか?

4

2 に答える 2

4

Angular を使用すると、モデルと入力要素の間に双方向バインディングが作成ng-modelされます。モデルを変更すると入力要素が更新され (すべてのバインディングの既定の動作)、UI 入力要素で変更が行われるとモデルが更新されます。

この動作を取り除くには、次のことができます

<input type="text" value='{{item.number}}' class="ng-scope ng-pristine ng-valid">
于 2013-06-10T13:40:49.967 に答える
1

明らかに、{{item.number}} はアイテム オブジェクトにバインドされます (双方向バインディング FTW! :-) )。レンダリング時にそのラベルを設定して変更しない場合は、コントローラーで、各アイテムに「originalNumber」という別のフィールドを作成し、ラベルをそのフィールドにバインドする必要があります。

于 2013-06-10T13:40:25.810 に答える