这段代码中的未知结构是什么?

时间:2014-11-15 20:21:10

标签: angularjs jinja2

我试图翻译项目oppia.org 代码(angularJs,在模板中)有一些东西 - <[stateName]>,我不明白它的构造<[]>。这是变量吗?还是指令?它是一个范围?它的价值在哪里?

代码:

<h4 ng-if="!stateNameEditorIsShown" ng-click="openStateNameEditor()" class="oppia-editable-section">
   <[stateName]>
   <span ng-if="editabilityService.isEditable()" class="glyphicon glyphicon-pencil oppia-editor-pencil" title="Edit State Name"></span>
</h4>

3 个答案:

答案 0 :(得分:1)

由于jinja2和angularjs都希望使用{{}}进行插值,因此其中一个必须给出。从这个例子中不清楚是否是angularjs或jinja2。如果您浏览正在翻译的代码,并找到类似

的内容
$interpolateProvider.startSymbol('<[');
$interpolateProvider.endSymbol(']>');

然后是使用替代绑定标记的angularjs代码。

编辑添加:

请参阅 https://code.google.com/p/oppia/source/browse/core/templates/dev/head/app.js第38-39行。这就是angularjs被配置为使用替代绑定标记的地方。

答案 1 :(得分:0)

我找到了! 在文件feconf.py中:

DEFAULT_INIT_STATE_NAME = 'First Stage'

答案 2 :(得分:0)

都不是。这是您的oppia.org代码已配置使用的替代插值标记。我猜你的一个程序员不喜欢默认的{{...}}胡子语法,而是用<[...]>代替。该值将来自与标准{{...}}标记相同的位置。

在您的代码中找到它,这将更有意义:

oppia.config([ "$interpolateProvider","$httpProvider",
  function(a,b){
    a.startSymbol("<[");
    a.endSymbol("]>");
    ... ... ...

$interpolateProvider https://docs.angularjs.org/api/ng/provider/ $ interpolateProvider上的API文档 希望这会有所帮助。