如何为AngularJS ng-repeat设置默认值?

时间:2018-02-12 00:32:37

标签: angularjs angularjs-ng-repeat



    <li ng-repeat="item in quantityList track by $index" ng-model="isPageValid='true'">

    <input value="item.quantity" ng-blur="validateQuantity(item)" ng-model="item.quantity">

    </li>
    
&#13;
&#13;
&#13;

我每次发生ng-repeat循环时都试图为状态变量设置默认值。我尝试过ng-model,但这并不奏效。例如,

  1. 我想设置 isPageValid =&#34; true&#34;在每次ng-repeat循环运行之前。 &#39;真正的&#39;将是默认值,验证函数将测试 isPageValid 是否应设置为&#39; false&#39;。
  2. 我希望每次执行ng-blur时都会运行ng-repeat循环。
  3. 注意:我理解我使用ng-model的方式不正确,但这只是为了说明问题。

    HTML:

    &#13;
    &#13;
    <li ng-repeat="item in quantityList track by $index" ng-model="isPageValid='true'">
    
        <input value="item.quantity" ng-blur="validateQuantity(item)" ng-model="item.quantity">
    
    </li>
    &#13;
    &#13;
    &#13;

    JS:

    &#13;
    &#13;
    scope.validateQuantity = function(item){
        var qty = item.quantity;
    
        if(parseInt(qty) >=1 && parseInt(qty) <= 200){
              item.isQuantityValid = true;
         }else{
               item.isQuantityValid = false;
               scope.isPageValid = false;
         }
    }
    &#13;
    &#13;
    &#13;

    循环创建一个输入框列表。目标是创建一个名为 isPageValid 的全局验证值,该值为“假”&#39;如果JS的验证对任何输入框都失败了。注意,当执行ng-blur时,运行JS验证并重新运行循环。

2 个答案:

答案 0 :(得分:0)

我相信ng-init可以提供帮助......

<ul ng-init="isPageValid='true'">
  <li ng-repeat="item in quantityList track by $index" >
    <input ng-blur="validateQuantity(item)" ng-model="item.quantity">
  </li>
</ul>

请注意,最好在控制器中初始化isPageValid,该validateQuantityDim Response1 As DialogResult = MessageBox.Show("Strip Metadata from selected image?" & Environment.NewLine & Environment.NewLine & "Warning this cannot be undone!", "Strip Metadata", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) 函数的范围相同。

答案 1 :(得分:0)

以下示例说明如何在控制器中初始化isPageValid并在每次调用validateQuantity后更新值...

在您的控制器中:

scope.isPageValid = true;

function updatePageValid() {
  scope.isPageValid = scope.quantityList.every(item => item.isQuantityValid);
}

scope.validateQuantity = function(item) {
    var qty = parseInt(item.quantity);
    item.isQuantityValid = (qty >= 1 && qty <= 200);
    updatePageValid();
});