【问题标题】:Pass service result to other controller将服务结果传递给其他控制器
【发布时间】:2016-10-24 13:37:45
【问题描述】:

我正在从家庭控制器调用getLanguageSpecificData(LangCode) 服务并将数据保存到localStorage。在主页上有Language 链接,如果用户点击English,它将重定向到第二个模板。但问题是仍然家庭控制器getLanguageSpecificData(LangCode) 服务没有完成它的执行。所以在第二个控制器中,当我试图从localStorage 获取结果时,它是不正确的(未更新)。 那么你能告诉在这种情况下哪种方法更好吗?

HomeController 代码:

app.controller('homeController',function($scope,$localStorage,$appService){     
    $scope.loadlanguagefile = function(langcode){           
        $troubleshootingService.getLanguageSpecificData(LangCode).then(function(responce){
            $localStorage.data = responce.data;
        });         
    }
}); 

'loadlanguagefile' 函数在用户点击英文链接时被调用并且应用被重定向到第二个模板。这是 secondController 代码:

app.controller('secondController',function($scope,$localStorage){
    $scope.data = $localStorage.data;
}); 

【问题讨论】:

  • 请添加一些代码,以便我们检查。

标签: angularjs local-storage


【解决方案1】:

根据我的建议,您应该使用 回调函数 来满足您的需求,当调用该函数时,请点击 English 点击disable ,如果你的结果是成功的,那就启用。它会是这样的:

   getLanguageSpecificData(LangCode,callback:(dataToReturn:any)=>void):any{
     //logic  here to get data to return

     callback(dataToReturn);
    }

用于调用此方法-

1- 在调用该方法之前使英文点击禁用。

2-然后调用方法-

  getLanguageSpecificData(imputLangCode,(result)=>{

      //logic for data modification
      //logic to enable English click

    });

3- 在方法调用中启用英文点击。

【讨论】:

  • 感谢您的帮助。问题是当用户单击“英语”链接时,我在主页 html 页面中编写了重定向页面代码:href ='#/secondTemplate'。我们可以在 'homeController 中编写重定向代码吗' 在成功调用 'getLanguageSpecificData' 服务之后。
  • 你不会需要那个,如果你禁用英文链接,直到getLanguageSpecificData 不会返回。是的,从技术上讲,您可以在服务调用成功后将代码重定向到任何控制器。
猜你喜欢
  • 2020-12-30
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
相关资源
最近更新 更多