我现在陷入僵局。我做了关于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
文件(减去html
和head
代码以及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
或类似的东西,但我还没有尝试过,因为我想不要改变我的文件的名称(尽管对于更大的应用程序可能更好)。
提前致谢,并且毫不犹豫地指出我可能错过的帖子。