ui-router 0.2.10返回嵌套视图的错误404

时间:2016-02-26 15:11:48

标签: javascript angularjs express angular-ui-router mean-stack

我现在陷入僵局。我做了关于MEAN堆栈的thinkster.io tutorial,他们使用angular ui-router来处理状态和路由。

他们使用内嵌模板,这在小型应用程序中非常方便。但是我希望在主index.ejs之外使用部分模板(我使用带有.ejs的Express视图引擎)。我的问题是,$stateProvider似乎无法找到我的home.ejs文件,以便将其注入<ui-view/> index.ejs。我从昨天起就一直在寻找GitHub和StackOverflow,但没有找到适合我的解决方案。

到目前为止,这是我的文件的组织,由于 Express生成器而生成的大多数文件夹(仅包括相关的文件夹):

--public
----javascript
------angularApp.js (contains factories, controllers and configuration)
--routes
----index.js (uses the express router)
--views
----home.ejs
----index.ejs
----posts.ejs
--app.js (initialization file)

app.js中,视图引擎定义如下:

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

因此,应该正确定义 view 文件夹的路径(并且在某些console.log()的帮助下似乎是这样。这是angularApp.js中的代码部分:

app.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
  $urlRouterProvider.otherwise('home');

  $stateProvider
    .state('home', {
      url: '/home',
      // template: '<h1>This Is A State</h1>' ,
      templateUrl: '/home',
      controller: 'MainCtrl',
      resolve: {
        postPromise: ['posts', function(posts) {
            return posts.getAll();
        }]
      }
    });
}]);

关于 templateUrl 我尝试了不同的版本,具体取决于我找到的内容(/home.ejs, home.ejs, /views/home.ejs, /views/home, ../../views/home.ejs, ../../views/home, etc...),但似乎没有解决我的问题。我可能完全错过了一些明显的东西,但我无法指出它。

这是我的index.ejs文件(减去htmlhead代码以及script代码:

  <body ng-app="appName">
    <nav class="navbar navbar-default pull-right" ng-controller="NavCtrl">
      <ul class="nav navbar-nav">
        <!-- Navbar definition -->
      </ul>
    </nav>
    <div class="row">
      <div class="col-md-6 col-md-offset-3">
        <div class="page-header">
          <h1 class="md-display-3"><a href="/#/home"> AppTitle </a></h1>
        </div>
        <ui-view>Hm. There should be something here.</ui-view>
      </div>
    </div>
  </body>

毋庸置疑,嗯。这里应该有一些东西。正确显示!

我读了一些关于需要某种index.home格式的部分模板的帖子,而ex-inline模板会变成parent.child.html或类似的东西,但我还没有尝试过,因为我想不要改变我的文件的名称(尽管对于更大的应用程序可能更好)。

提前致谢,并且毫不犹豫地指出我可能错过的帖子。

0 个答案:

没有答案