我可以将参数从控制器传递给app.js吗?

时间:2016-01-12 17:41:59

标签: javascript angularjs cordova ionic-framework

如果变量为true,我需要显示我的离子应用程序的开始视图,如果变量为false,我需要显示另一个视图,所以我需要知道我是否可以从控制器获取参数并在app中使用它。 JS:



if (parameter===true)
  {
    $urlRouterProvider.otherwise('/app/inicio');
  
  }else {
    $urlRouterProvider.otherwise('/app/inicio2');  
  }




有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这个答案可能不是供应商的最佳选择,但它可以满足您的需求。

Ionic app状态在模块配置块中定义,在配置块中没有控制器,没有服务,没有工厂,这些都没有被实例化。在配置块中(在常量旁边)实例化的唯一角度对象是提供者。因此,您可以创建一个自定义提供程序,它可以为您提供参数,该参数将告诉您在应用程序启动时向用户显示哪个视图。以下是创建提供程序的方法:

app.provider('mainView', function MainViewProvider() {
  var someCondition = false;

  this.getCurrentMainView = function() {
    if(someCondition)
      return "/app/inicio";
    else {
      return "/app/inicio2";
    }
  };
  //return a dummy factory that will never be used or injected
  this.$get = ["nullService", function(){return null;}];

});

然后在您的配置块中,注入提供程序并使用getCurrentView函数获取导航到的URL

app.config(function($stateProvider, $urlRouterProvider, mainViewProvider) {
  $urlRouterProvider.otherwise(mainViewProvider.getCurrentMainView());

});