ステータスを変更するボタンがあります(STARTED / STOPPED)。ボタンは 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>
しかし、ボタンをクリックしても、パラメーターが STOPPED に設定されているのに STARTED にスタックしている状態は切り替わりません。
問題を再現するプランカー。
編集:より良い例
最初の回答では、フィルターを削除することで機能しましたが、保持したいと思います。そこで、ボタンがレンダリングされ、ボタンをクリックするとデータの内容がインクリメントされる例を作成しました。最初のクリック後にカウンターがスタックします。
初期化:<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)
。
修正されたプランカー