更改后的ng-model-binding未更新

时间:2017-04-25 07:22:46

标签: javascript angularjs angularjs-directive angularjs-scope angular-ngmodel

[ng-repeat用于形成此表]

想要执行以下任务:

  1. Step1-在PromoPriceTxt3文本框中输入应反映在其他文本中 它下面的盒子也是。即PromoPriceTxt4
  2. Step2-" PromoPrice"文字框,     应该根据a影响右边第三列的值     公式(item.promo_margin * item.promo_price) - item.promo_price + item.gasv)> 0)
  3. 完成第1步。但第二步不起作用。

    我用相同的ng-model 绑定了它们。在UI中可以看到值的变化。但是当我检查chrome中的元素时,我会看到" value"文本框的属性。 (检查窗口中标有红色)

    我也试过在文本更​​改时调用一个方法。但那也没有用。 当我将光标聚焦在后续文本框中并更改时,将调用change事件。

    <tbody data-ng-repeat="item in prod track by $index">
        <tr>
        <td>{{item.sku}}</td>
        <td>{{item.retailer_nm}}</td>
        <td>{{item.base_margin | number : 4}}</td>
        <td bgcolor="#c0c0c0"><span data-ng-hide="item.editing" data-ng-dblclick="editItem(item)">
        {{item.promo_margin | number : 4}}</span>
        <input data-ng-show="item.editing" data-ng-model="item.promo_margin" data-ng-blur="doneEditing()" autofocus />
        </td>
        <td>{{item.gasv | number : 2}}</td>
        <td>{{item.base_dcm_per_unit | number : 2}}</td>
        <td ng-if="((item.promo_margin * item.promo_price) - item.promo_price + item.gasv) > 0">{{((item.promo_margin * item.promo_price) - item.promo_price + item.gasv) | number : 2}}</td>
        <td ng-if="((item.promo_margin * item.promo_price) - item.promo_price + item.gasv) < 0">0.00</td>
        <td>{{item.map | number : 2}}</td>
        <td ng-if="$index==0">
        <input  id="PromoPriceTxt3" data-ng-blur="setPromoPrice()"  class="maintextbox" type="text"  data-ng-model="item.promo_price"  data-ng-value="{{item.promo_price}}"/>
    </td>
    <td ng-if="$index!=0">
    <input id="PromoPriceTxt4"  class="replicate" type="text" data-ng-model="item.promo_price" onfocus="" data-ng-value="{{item.promo_price}}"
    />
    </td></tr></tbody>
    

2 个答案:

答案 0 :(得分:0)

你能尝试$scope.$apply()功能吗?因为它在大多数时候都适合我

答案 1 :(得分:0)

使用ng-change指令。请参阅链接https://www.w3schools.com/angular/ng_ng-change.asp