![](/img/trans.png)
[英]Access AngularJS scope object using a different scope object as the key
[英]How to access $scope object in factory using AngularJS?
我有序列化方法post,所以riskAssessmentKey
不是$scope.topRiskDTO
一部分,但是我從$scope.riskAssessmentDTO.riskAssessmentkey
傳遞了$scope.riskAssessmentDTO.riskAssessmentkey
值,現在我要投遞到工廠,但是當我保存所有值都在投遞但riskAssessmentKey不確定時我不知道為什么。
到目前為止嘗試過的代碼。
parentCtrl.js
$scope.addTopRisk = function(){
topRiskGridConfig.topRiskmodalWinConfig.title = 'Add top Risk';
$scope.viewTopRiskWin.setOptions(topRiskGridConfig.topRiskmodalWinConfig);
$scope.$broadcast('addTopRisk',$scope.riskAssessmentDTO.riskAssessmentKey);
};
childCtrl.js
$scope.topRiskDTO = {};
$scope.issuePltDataSource = kendoCustomDataSource.getDropDownDataSource('RA_KY_CNCRN_IS_PLTFM');
$scope.$on('addTopRisk', function (s,id){
$scope.riskAssessmentDTO.riskAssessmentKey = id;
$scope.viewTopRiskWin.open().center();
$scope.submit = function(){
rcsaAssessmentFactory.saveTopRisk($scope.topRiskDTO,id).then(function(){
$scope.viewTopRiskWin.close();
});
};
});
factory.js
var serializeTopRisk = function (topRisk,id) {
var riskAssessmentKey = id;
var objToReturn = {
topRiskName: topRisk.topRiskName,
mitigationActivityDes: topRisk.mitigationActivityDes,
issuePltfLookUpCode: topRisk.issuePltfLookUpCode,
issueNo: topRisk.issueNo,
riskAssessmentKey: topRisk.riskAssessmentKey
};
if(topRisk.riskAssessmentKey){
objToReturn.riskAssessmentKey = topRisk.riskAssessmentKey;
}
return objToReturn;
};
saveTopRisk: function(topRisk,id) {
var request = serializeTopRisk(topRisk);
console.log('request payload', JSON.stringify(request));
console.log('ID :: ', id);
var endpoint = 'app/assessment/rest/addTopRisks';
return $http.post(endpoint, request);
}
您忘記了將ID傳遞給serializeTopRisk函數。
因此,您已經正確地通過了以下參數:
saveTopRisk: function(topRisk,id) {
var request = serializeTopRisk(topRisk);
但是然后serializeTopRisk也應該獲取ID
var serializeTopRisk = function (topRisk, id) { // added the id over what you originally had
var riskAssessmentKey = $rootScope.riskAssessmentDTO.riskAssessmentKey; // drop this, use id instead
如果不需要,不要使用rootScope在工廠和控制器之間傳遞數據(看起來您已經通過向控制器提供對象輸入來將值從工廠傳遞給工廠,保持這種方式並刪除rootScope的使用情況)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.