将服务结果传递给其他控制器

时间:2016-10-24 04:53:15

标签: angularjs local-storage

我从家庭控制器调用getLanguageSpecificData(LangCode)服务并将数据保存到localStorage。在主页上有Language个链接,如果用户点击英语,则会重定向到第二个模板。但问题是仍然是家庭控制器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;
        });         
    }
}); 
当用户单击Enlgish链接并且应用程序重定向到第二个模板时,将调用

'loadlanguagefile'函数。这是第二个控制器代码:

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

1 个答案:

答案 0 :(得分:0)

根据我的建议,您应该使用回调功能来满足您的需求,当调用该功能时,使英语点击禁用 ,如果您的结果成功,那么启用。它将是这样的:

   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-在方法调用中启用英文单击。

相关问题