我正在使用xeditable angular指令。我需要根据外部下拉列表的值设置网格的Status
列的所有下拉值。
我已经设置了JsFiddle here。但它没有用。你能告诉我为什么?提前谢谢。
更新:当我点击cancel
按钮时,它会更新。很奇怪:(你能告诉我如何理清这个问题吗?
HTML
<span editable-select="bulkPaymentType" e-form="tableform" e-ng-options="s.value as s.text for s in statuses" e-ng-change="setBulkPaymentType($data)">
</span>
JS
$scope.setBulkPaymentType = function (data) {
for (var i = $scope.users.length; i--;) {
var user = $scope.users[i];
user.status = data;
};
};
答案 0 :(得分:1)
我找到了解决方案。这是:)
<强> HTML 强>
<span editable-select="bulkPaymentType" e-form="tableform" e-ng-options="s.value as s.text for s in statuses" e-ng-change="setBulkPaymentType($data,tableform)">
</span>
<强> JS 强>
$scope.setBulkPaymentType = function (data,tableform) {
for (var i = 0; i < tableform.$editables.length; i++) {
if (tableform.$editables[i].name === 'user.status') {
tableform.$editables[i].scope.$data = data;
}
}
};
使用它: JSFiddle
答案 1 :(得分:0)
您的setBulkPaymentType方法正在更新控制器范围内的用户。 但是,可编辑输入中的值实际上是来自控制器范围的副本。因此,当您调用setBulkPaymentType时,您不会看到它们发生变化。当您点击取消按钮时,表单将显示您使用setBulkPaymentType更新的控制器范围中的值,这就是原因。我不认为您可以直接修改每个可编辑内的$ data,因为它们使用的是隔离范围。无法从外部访问$ data。