我有一个Angular 1.x MVC设置如下:
...
.controller('orderdetailCtrl', ['$scope', 'orderServer', ..., function($scope, orderServer, ...) {
$scope.refundDetail = function(item) {
orderServer.refundDetailDialog(item).result.then(function(data) {
if(data) {
item.refund_info.refund_balance = data;
}
});
}
$scope.refundEdit = function(item) {
orderServer.refundEditDialog(item).result.then(function(data) {
if (data) item.refund_info.refund_balance = data;
});
}
...
}]).controller('refundDetailDialogCtrl', ['$scope', 'orderServer', ..., function($scope, orderServer, ...) {
...
$scope.cancel = function() {
$modalInstance.close($scope.entity.refund_info.refund_balance);
};
}]).factory('orderServer', [..., function(...) {
return {
refundDetailDialog: function(item) {
return $dialogs.create('/.../xxx.modal.html', 'refundDetailDialogCtrl', item, {
size: "lg"
});
},
refundEditDialog: function(item){
return $dialogs.create('/.../xxx.modal.html', 'refundEditCtrl', item);
}
...
}
}]);
现在父页面的设置如下:
<tr ng-repeat="details in entity.refundlist">
...
</tr>
此处重复的“详细信息”在item
中为$scope.refundDetail
,现在上面的代码运行正常。出于好奇,我想知道我是否可以将orderServer的承诺中的item替换为“details”的当前范围(意思是替换item.refund_info.refund_balance = data
)。
我到目前为止尝试过:
$scope.refund_info.refund_balance = data;
this.refund_info.refund_balance = data;
refund_info.refund_balance = data;
$scope.details.refund_info.refund_balance = data;
this.details.refund_info.refund_balance = data;
details.refund_info.refund_balance = data;
其中没有一个有用。
答案 0 :(得分:1)
此问题存在逻辑错误。当数据通过您的工厂orderdetailCtrl
传递回orderServer
时,它位于orderdetailCtrl
的范围内,而不是ng-repeat范围“详细信息”,这意味着您无法选择“详细信息” “直接。您当前的方法是选择“详细信息”的唯一方法。