angularjs在控制器中有条件地启动加载模板

时间:2015-05-22 13:11:28

标签: angularjs

在我的Ionic Framework应用程序中,我需要在启动时从数据库给出的某些条件下加载一些模板。例如,如果存储在数据库中的用户登录信息,应用程序应转到普通模板。如果不是,则应转到用户请求登录凭据的模板。我在这样的启动控制器中处理条件:

.controller('StartProcessCtrl', function ($scope,$ionicPlatform, StartProcess) {
  $ionicPlatform.ready(function() {
    if(StartProcess.userExists()) {
      //load the normal template
    }
    else {
     //load the credentials template
    }
  });
})

在这种情况下,StartProcess是一个与SQLite数据库通信的工厂。

我的问题是我在这里使用$urlRouterProvider

$urlRouterProvider.otherwise('/app/startProcess');

所以它始终在startProcess模板中启动。我希望得到一个级别抽象,所以如果有保存的凭证,它应该转到带有侧边菜单模板的普通应用程序,依此类推,如果不是,它应该打开凭证模板而不使用左侧的侧边菜单。

1 个答案:

答案 0 :(得分:0)

一个解决方案,即将其保留在启动控制器中,将使用$location服务将用户路由到所需位置,例如:

.controller('StartProcessCtrl', function ($scope, $location, $ionicPlatform, StartProcess) {
      $ionicPlatform.ready(function() {
        if(StartProcess.userExists()) {
          //load the normal template
          $location.url('/user');
        }
        else {
         //load the credentials template
         $location.url('/credentials');
        }
      });
    })

除此之外,您需要基本上使用$ http服务来获取模板,编译它并绑定当前作用域(或新作用域),获取持有模板的html容器并更新手动模板容器。有关如何使用此方法执行此操作的详细信息,请查看此SO Question