2015-06-27 50 views
0

我有一個文本字段的列表,在結尾處有一個空的文本字段,綁定到一個數組。我需要在空文本字段中檢測文本條目,因此當用戶開始輸入值時,我會向數組中添加另一個空元素,以便用戶始終可以使用另一個字段。角JS文本字段輸入變化 - 手錶

我應該使用$ watch還是ng-change來查看變化,並相應添加元素?我知道$ watch總是開火,所以看起來這可能是一個不好的選擇。

<div ng-repeat="variation in productEditorModel.ColorVariations"> 
               <div class="form-inline"> 
                <input type="text" id="txtVariationName" placeholder="Name" name="variationName" ng-model="variation.VariationName" required class="form-control"> 

                </div> 
              </div> 

回答

1

考慮性能方面,你應該更好地利用ng-change,因爲這將作爲您添加變化監聽輸入像$('input').change(...)就像你提到的。

考慮到UX和功能方面,在控制器中簡單使用$scope.$watch('model', ...)會更好也更容易。

但我仍然認爲這取決於你有多少輸入。我認爲即使是100多個輸入也沒有真正的巨大差異,因爲您只是比較字符串,我不認爲用戶在輸入時會延遲。

1

爲什麼不將數組綁定到輸入元素的ng重複?這樣綁定將自動工作。

+0

是的,他們都是這樣綁定的,我用代碼更新了OP。 –

+0

也許你想要這個:$ scope.GenderID = $ scope.Gender [0] .GenderID; – zszep

0

感謝您的意見,ng-change效果最佳。

ng-change="update(variation,$index);" 

    $scope.update = function (variation, index) { 
     if (!angular.isUndefined(variation.VariationName)) { 
      if (variation.VariationName.length > 0) { 
       $scope.addVariation(variation.VariationTypeId); 
      } else { 
       $scope.productEditorModel.ColorVariations.splice(index, 1); 
       $scope.removeVariation(index, variation.VariationTypeId); 
      } 
     } else { 
      $scope.removeVariation(index, variation.VariationTypeId); 
     } 
    }