看似没有理由我的angular $ scope变量没有在浏览器中呈现。我的整个项目一直很好,直到我今天创建这个页面。所有其他页面仍然按预期工作。我已将我的所有代码删除到只有变量本身,并使用以下代码并将其仍然呈现为[undefined]。
我正在使用python / flask通过jinja模板引擎提供应用程序,因此更改了角度的插值字符,因此它们不会与jinja中的相同字符冲突:
var zues = angular.module('zues', []);
zues.config(['$interpolateProvider', function($interpolateProvider) {
$interpolateProvider.startSymbol('{{[');
$interpolateProvider.endSymbol(']}}');
}]);
控制器:
zues.controller('test', ['$scope', '$http', function($scope, $http){
$scope.test123 = "testing123";
}]);
HTML:
<body ng-app="zues" ng-controller="test">
{{[ test123 ]}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<script src="/static/assets/js/zues.js"></script>
<script src="/static/assets/js/Controllers/test.js"></script>
python / flask路线:
from flask import Flask, render_template
import flask
application = Flask(__name__)
@application.route("/test")
def test():
return render_template('test.html')
if __name__ == "__main__":
application.run(host='127.0.0.1', reloader_type='stat', debug=True)
这在浏览器中呈现为:
[未定义]
我原以为它会呈现:
是testing123
我只是忽略了一些简单的东西?
答案 0 :(得分:0)
我明白了。我为角度选择的插值字符与Jinja默认使用的字符过于密切相关。 Jinja正在使用{{[test123]}}并将方括号解释为纯文本,然后尝试在我的python脚本中找到一个不存在的变量test123。
这似乎没有打破项目的其余部分,因为我在项目其余部分的html模板中使用的角度变量总是绑定到其他东西,因此被摘要循环观察,而在这种情况下它只会被插值一次。
我将插值字符更改为{[{test123}]},以便Jinja永远不会捕获它而只有角度。
答案 1 :(得分:0)
一些快速变化应该会有所帮助。
1)摆脱插值提供者。 如果您完成2&amp; 3以下。
2)关闭控制器定义时,取下关闭括号]
3)在大括号之前和'}之后添加 {{'}}
示例/ {{'{{someVariable +“”+ anotherVariable}}'}}