由于ng-repeat过滤器,不调用函数

时间:2015-09-18 08:57:21

标签: angularjs

我有这样的代码:

{{1}}

当我单击复选框“已处理”时,它工作正常(调用changeProcessedStatus函数)。但是当我点击复选框“付费”时,由于记录被定义为过滤,因此当我删除ng-repeat过滤器时,不会调用changePaidStatus函数。(我不知道为什么)。正常调用changePaidStatus函数。

我该如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:3)

ng-click和ng-model的执行顺序不明确。相反,您应该使用ng-change来确保获得模型变量的正确值:

<div class="row"
 ng-repeat="x in orders|orderBy:'order_id'| filter:{ paid: '0' } ">        
    <div class="col left">
        <INPUT TYPE="CHECKBOX" NAME="processed" id="processed"
               ng-true-value="'1'"
               ng-false-value="'0'"
               ng-model="x.processed"
               ng-change="changeProcessedStatus(x.id, x.processed)">上菜/未上菜
        <P>
    </div>
    <div class="col left">
        <INPUT TYPE=CHECKBOX NAME="paid" id="paid"
               ng-true-value="'1'"
               ng-false-value="'0'"
               ng-model="x.paid"
               ng-change="changePaidStatus(x.id, x.paid)">付款/未付款
        <P>
    </div>
</div>