【问题标题】:Double curly backets not displaying what I want双花括号不显示我想要的
【发布时间】:2015-11-01 23:43:11
【问题描述】:

我只是通过将 AngularJS 构建推到 Heroku 上来测试水域,但它没有在双花括号中显示我想要的内容。不确定问题是什么,因为我的 src 似乎是正确的。 这是我的 index.ejs 文件:

<!DOCTYPE html>
<html ng-app="rantList" >
<head>

<!--<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">-->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">    </script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js">    </script>

<!--<link rel = "stylesheet" type = "text/css" href = "/node_modules/bootstrap/dist/css/bootstrap.min.css"/>-->
</head>
<body >
</div>
<div ng-controller = "RantController as rantList" >
<h1> {{rantList.piece.name}}</h1>
<p> {{rantList.piece.paragraph}} </p>

</div>


<!--    <script type = "text/javascript" src =     "/node_modules/angular/angular.min.js"></script>-->
<script src=     "http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<script type = "text/javascript" src = "/../app.js"> </script>
<!--<script src = "https://code.angularjs.org/1.4.3/angular-route.js"> </script>-->
<p>{{"Hello"}}</p>
</body>
</html>

这是我的 app.js 文件:

(function(){
var app = angular.module('rantList', []);

app.controller('RantController', function(){
  this.piece = rant;
});

var rant = {
  name: 'First User',
  paragraph: '....',
}
})();

这是我的 server.js 文件:

var express = require('express');
var app = express();

// set the port of our application
// process.env.PORT lets the port be set by Heroku
var port = process.env.PORT || 8080;

// set the view engine to ejs
app.set('view engine', 'ejs');

// make express look in the public directory for assets (css/js/img)
app.use(express.static(__dirname + '/public'));

// set the home page route
app.get('/', function(req, res) {

// ejs render automatically looks in the views folder
res.render('index');
});

app.listen(port, function() {
console.log('Our app is running on http://localhost:' + port);
});

在双花括号中,它显示 rantList.piece.name 而不是 First User(第一个示例),在第二个示例中,它显示 {{"Hello World"}} 而不是 Hello World。 感谢您抽出宝贵的时间,我对此很陌生,希望能提供任何帮助。

【问题讨论】:

  • 使用 ng-bind 代替 {{scopeVariable}}.. 是的,它会显示 {{"hello"}} 而不是 --: hello 因为它不是 $scope 变量,而是一个字符串。
  • 好的,我就是这么做的。然而,现在什么都没有出现。应该没有区别,但应该有吗?至少对于 $scope 变量,因为我根本没有加载太多,所以 {{ }} 显示变量应该没有延迟

标签: javascript angularjs heroku ejs


【解决方案1】:

遇到此类问题,您首先应该检查浏览器控制台是否有错误。

根据您所说的判断,您可能使用的是 Heroku 域名。 Heroku 域名只能通过 https 访问,Chrome 不会在 https url 上加载非 https 资源,因此您需要确保所有资源都是 https。

在您的情况下,您的 angular 和 boostrap 库通过 https 包含在内。幸运的是,这些 CDN 支持 https,因此您只需将 URL 更改为:

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>

您的浏览器控制台可能会报告如下内容:

Mixed Content: The page at 'xxx' was loaded over HTTPS, but requested an insecure script 'http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js'. This request has been blocked; the content must be served over HTTPS. 

这就是为什么您应该始终检查控制台是否有错误的原因。大多数情况下,它会准确地告诉您问题所在。

另外,您的 app.js 路径看起来错误。 /../app.js 不是有效的 URL。没有看到你的文件结构,很难说这实际上应该是什么,但如果角种子项目是可以通过的,它应该是这样的:

<script type="text/javascript" src="app.js"></script>

同样,如果您的 URL 不正确,控制台会告诉您。

【讨论】:

  • 好的,我将 URL 更改为 https。对,我一直在检查控制台是否有错误。我收到了两个,app.js 的 404 错误,以及 angular.min.js 的未捕获错误:[$injector:modulerr]。我应该将我的 app.js 文件与索引一起放在视图文件夹中以便于访问吗?我一直在尝试不同的路径,但它们不起作用。至于未捕获的错误,我不知道如何修复它。我尝试包含 ng-route 并将其作为依赖模块加载,但无济于事。
  • @user5209962 你可以把app.js文件放在你喜欢的地方,你只需要确保你的src是正确的。如果您创建了一个js 文件夹,那么src 将是"js/app.js"。如果它在根中(如角种子),那么它只是"app.js"。我不知道你从哪里得到"/../app.js",但这肯定不是一条有效的路径。关于您的其他问题,这个 Stack Overflow 答案可能会有所帮助:stackoverflow.com/questions/21045416/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 2017-05-09
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 2020-06-23
相关资源
最近更新 更多