相关疑难解决方法(0)

Angular UI Router:根据父解析对象决定子状态模板

这是我的app.js文件 - 我有一个父状态和两个子状态.两个子视图都需要该对象.

    states.push({
      name: 'parentstate',
      url: '/parent/:objId',
      abstract: true,
      templateUrl: 'views/parentview.html',
      controller: function() {},
      resolve: {
        obj: function(OBJ, $stateParams) {
          return OBJ.get($stateParams.objId);
        }
      }
    });
Run Code Online (Sandbox Code Playgroud)

我想用这个解决的obj来决定子模板

    states.push({
      name: 'parentstate.childs',
      url: '/edit',
      views: {
        "view1@parentstate": {
          templateUrl: 'views/view1',
          controller: 'view1Ctrl'
        },
        "view2@parentstate": {
          templateUrl: function(obj) {
            if (obj.something == something) {
              return "views/view2first.html";
           } else {
              return 'views/view2second.html';
            }
          },
          controller: 'view2Ctrl'
        }
      }  
    });
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这一目标?

javascript angularjs angular-ui-router

9
推荐指数
1
解决办法
4256
查看次数

Angular和UI-Router,如何设置动态templateUrl

我如何使用从我的数据库中获取的名称作为templateUrl文件名?

我试过这个:

$stateProvider.state('/', {
  url: '/',
  views: {
    page: {
      controller: 'HomeCtrl',
      templateProvider: function($templateFactory, $rootScope) {
        console.log("$rootScope.template")
        return $templateFactory.fromUrl('/templates/' + $rootScope.template);
      }
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

如果我的$ rootScope.template来自数据库查询,那似乎不起作用.不知道为什么,但它不起作用.

如果在我的控制器中我做$ rootScope.template ="whatever.html"一切正常,但如果我从数据库查询模板,根本没有任何事情发生.templateProvider中的console.log("$ rootScope.template")没有给我任何东西(查询本身工作得很好).

查询是否只需要太长时间,因此它没有为路由器做好准备或者在这里发生了什么?

我做错了,我该怎么办呢?

angularjs angular-ui-router

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

angular-ui-router ×2

angularjs ×2

javascript ×1