我已经与Angular合作过,但已经有一段时间了,所以我有点生疏。我似乎无法让Angular ui-router为我的任何状态加载html模板。这是一个非常简单的应用程序;它不需要任何ajax调用,只需通过ui-router获得html模板。我目前试图达到的状态是/ projects状态,但是当我输入/#/ projects时,我看到的只是一个空白页面。以及/#后面的路径变为#!#%2Fprojects;我不确定这是否正常。控制台中没有显示任何错误,并且我放入状态和控制器的所有日志似乎都已注销,表明它们正在正确加载。因此,我相信Angular没有找到templateUrl,但我不知道为什么不。我正在使用Angular 1.6。这里是所有相关的文件: server.jsAngular-ui-router无法加载视图
'use strict';
/* eslint-disable global-require */
var express=require('express');
var app=express();
app.use("/", express.static(__dirname));
var port=app.listen(process.env.PORT || 8080);
app.listen(port, function(){
console.log("Server working!");
})
app.get('*', function(request, response){
console.log(request);
response.sendFile(__dirname+'/browser/index.html');
})
我index.html文件:
<html>
<head>
<title> My Portfolio</title>
<script src="/node_modules/angular/angular.js" defer></script>
<script src="/node_modules/angular-ui-router/release/angular-ui-router.js" defer></script>
<script src="browser/js/app.js" defer></script>
<script src="browser/js/projects/projects_controller.js" defer></script>
<script src="browser/js/projects/projects_state.js" defer></script>
</head>
<body ng-app="app">
<div id="main">
<ui-view></ui-view>
</div>
</body>
</html>
我app.js
'use strict';
var app = angular.module('app', ['ui.router']);
app.run(function($rootScope) {
$rootScope.$on("$stateChangeError", console.log.bind(console));
});
我的项目状态:
'严格使用';
console.log("project state");
app.config(function($stateProvider){
$stateProvider.state('projects', {
url:'/projects',
templateUrl: '/js/projects/projects.html',
controller: 'projects_ctrl'
})
})
console.log("state out!")
项目控制器:
'use strict';
console.log("controller");
app.controller('projects_ctrl', function($scope){
console.log("hi!")
})
而且projects.html页面(这是从来没有达到过...)
<div>
<h1>Hi, this is the projects page!</h1>
</div>
请帮帮忙!
您可以从浏览器加载视图(即/js/projects/projects.html)吗? –
@JB Nizet不,我无法加载视图。这是我的全部问题。 – Wallaceness
所以这是一个服务器问题。不是角度问题。如果服务器不允许访问视图,角度怎么显示呢?用NodeJS标记您的问题并发布您的服务器结构。我对NodeJS无能为力,但如果NodeJS没有标记为NodeJS,您将不会得到NodeJS开发人员的关注。 –