2016-09-22 45 views
0

控制器我有以下角传球数据从服务

angular.module('LocatorInitApp').factory('userRecordService',userRecordService); 

function userRecordService(){ 
     var custRec; 
     this.checkUserType = function(urlParams){ 
      if(urlObject && urlObject.aid && urlObject.aid.startsWith(accPrefix)){ 
        objModel = new RemoteObjectModel.Account(); 
     } 
     if (urlObject && urlObject.aid && urlObject.aid.startsWith(leadPrefix)){ 
       objModel = new RemoteObjectModel.Lead(); 
     } 
     if(urlObject == null || urlObject.aid == null || urlObject.length <= 3 || objModel == null){ 
      displayReadingInformationErrorView(); 
     } 
     if(objModel){ 
      objModel.retrieve({ where: { Id: { eq: urlObject.aid}} }, loadRecordType); 
     } 

     function loadRecordType(err,records,event){ 
      if(err){ 
       displayReadingInformationErrorView(); 
       } 
       else if(records != null && records.length == 0){ 
        displayReadingInformationErrorView(); 
        } 
        else { 
         console.log(records[0].get('Name')+"Record Exist"); 
         custRec = { 
           Name   : records[0].get('Name') 
          , lat    : records[0].get('Latitude__c') 
          , lon    : records[0].get('Longitude__c') 
          , SiteStreet  : records[0].get('SiteStreet__c') 
          , SiteCity  : records[0].get('SiteCity__c') 
          , SiteCountryCode : records[0].get('SiteCountryCode__c') 
          , SitePostalCode : records[0].get('SitePostalCode__c') 
          , AddressID  : records[0].get('AddressID__c') 
          , loaded   : true 
          }; 
          siteInformationReadingSuccessfulView(); 
         } 
        } 
      return custRec; 
     }, 

     this.getUser = function(){ 
      return custRec; 
     } 
    } 

我试图访问custRec在我的控制器给定的服务,但我不能这样做。有人可以告诉我一种访问custRec的方法。或者如果我应该删除工厂并改用服务模式?

回答

0

您还没有从暴露custRec变量的服务中返回对象。

解决方法:右键的服务(userRecordService功能)结束之前,这样写:

`

return { 
custRec: custRec 
} 

`

现在在你的控制器注入userRecordService,然后你可以使用您的控制器中的custRec变量使用userRecordService.custRec语句。

+0

无法与您的更改 –

+0

你必须告诉我更多。让我再看看整个代码。请在这里粘贴全新的代码,以便我能理解 –

0

首先,您使用的“本”的)工厂对象,这是不recommended.You可以使用。服务(结合的代替.factory()

请问您可以尝试下面的代码来解决您的问题。它可能会帮助你。

angular.module('LocatorInitApp').factory('userRecordService', userRecordService); 

function userRecordService() { 
    var custRec; 
    this.checkUserType = function(urlParams) { 
      if (urlObject && urlObject.aid && urlObject.aid.startsWith(accPrefix)) { 
       objModel = new RemoteObjectModel.Account(); 
      } 
      if (urlObject && urlObject.aid && urlObject.aid.startsWith(leadPrefix)) { 
       objModel = new RemoteObjectModel.Lead(); 
      } 
      if (urlObject == null || urlObject.aid == null || urlObject.length <= 3 || objModel == null) { 
       displayReadingInformationErrorView(); 
      } 
      if (objModel) { 
       objModel.retrieve({ 
        where: { 
         Id: { 
          eq: urlObject.aid 
         } 
        } 
       }, loadRecordType); 
      } 

      function loadRecordType(err, records, event) { 
       if (err) { 
        displayReadingInformationErrorView(); 
       } else if (records != null && records.length == 0) { 
        displayReadingInformationErrorView(); 
       } else { 
        console.log(records[0].get('Name') + "Record Exist"); 
        custRec = { 
         Name: records[0].get('Name'), 
         lat: records[0].get('Latitude__c'), 
         lon: records[0].get('Longitude__c'), 
         SiteStreet: records[0].get('SiteStreet__c'), 
         SiteCity: records[0].get('SiteCity__c'), 
         SiteCountryCode: records[0].get('SiteCountryCode__c'), 
         SitePostalCode: records[0].get('SitePostalCode__c'), 
         AddressID: records[0].get('AddressID__c'), 
         loaded: true 
        }; 
        siteInformationReadingSuccessfulView(); 
       } 
      } 
      return custRec; 
     }, 

     this.getUser = function() { 
      return custRec; 
     } 

    //returning factory object.. 

    return { 
     checkUserType: checkUserType, 
     getUser: getUser 
    }; 
}