2017-06-15 66 views
3

我有一個角1.x的MVC設置爲這樣:是否有一種方法可以在ng-repeat中選擇當前範圍?

... 

.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> 

這裏重複的「細節」是$scope.refundDetailitem,現在上面的代碼工作得很好。出於好奇,我想知道是否可以將OrderServer的承諾中的項目替換爲當前的「細節」範圍(意思是替換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

使用'$ parent。$ scope.' –

+0

你在哪裏使用'refundDetail'?請在HTML –

+0

@ pro.mean中寫下相關的代碼,如果你再次閱讀代碼,你會發現這與這個問題無關。 RefundEdit將數據傳回給RefundDetail,然後將相同的數據傳回給OrderDetail的ng-repeat範圍。 –

回答

1

這個問題有一個邏輯錯誤。當數據通過工廠orderServer傳回到orderdetailCtrl時,它位於orderdetailCtrl的範圍內,而不是ng-repeat範圍的「詳細信息」,這意味着您無法直接選擇「詳細信息」。您目前的方法是選擇「細節」的唯一方法。

相關問題