xeditable Grid的下拉值不能从外部下拉列表中更改

时间:2015-07-09 13:50:42

标签: javascript angularjs x-editable

我正在使用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;
        };
    };

JSFiddle

2 个答案:

答案 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。

相关问题