我有一个按钮来更改状态(已启动/已停止)。该按钮是在 ng-grid 的单元格中创建的。
单元格定义为{field:'status', displayName:'Status', cellTemplate: 'cell/statusCellTemplate.html'}]
模板所在的位置
<button class="btn btn-primary" ng-click="changeStatus(row.getProperty('id'),'{{row.getProperty(col.field) | switchStatus}}')">{{row.getProperty(col.field)}}</button>
myapp.filter('switchStatus', function() {
return function(input) {
return (input == 'STOPPED') ? 'STARTED' : 'STOPPED';
};
});
在 Plunker 中,初始状态为 STOPPED,因此渲染的单元格为
<button class="btn btn-primary ng-scope ng-binding" ng-click="changeStatus(row.getProperty('id'),'STARTED')">STOPPED</button>
然后单击按钮按预期切换状态,呈现的单元格为
<button class="btn btn-primary ng-scope ng-binding" ng-click="changeStatus(row.getProperty('id'),'STOPPED')">STARTED</button>
但是点击按钮不会切换状态,状态是卡在STARTED,而参数设置为STOPPED。
重现问题的Plunker。
编辑:更好的例子
第一个答案通过删除过滤器使其工作,但我想保留它。因此,我创建了一个示例,其中呈现了一个按钮,单击该按钮会增加数据的内容。第一次点击后计数器被卡住。
在里面:<button class="btn btn-primary ng-scope" ng-click="increment(1)">Increment</button>
点击:<button class="btn btn-primary ng-scope" ng-click="increment(2)">Increment</button>
点击:<button class="btn btn-primary ng-scope" ng-click="increment(2)">Increment</button>
应该是increment(3)
。
修改后的Plunker