簡體   English   中英

如何使用AngularJS在工廠訪問$ scope對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM