如何在handlers.js模板中使用getters
How to use getters in handlebars.js templates?
我正试图让我的handlers.js模板做这样的事情:
<li>{{ user.get('firstName') }} {{ user.get('lastName') }}</li>
显然,这是行不通的。handlers.js有任何语法可以像上面那样直接使用getter吗?
谢谢。
<li>{{user.firstName}} {{user.lastName}}</li>
尽管如果它在循环中(来自<li>
的假设),它应该是{{this.firstname}}
这是在车把中工作的,基本上是一个助手,然后使用{{get-book"title"}}:
Handlebars.registerHelper('get', function(model, attributeName)
{
return model.get(attributeName);
});
var templateStr = '<div class="book-title">{{get preferredBook "title"}}</div>';
var Book = Backbone.Model.extend({});
var b = new Book({title: 'Lord of the rings'});
var context = {
preferredBook: b
};
var template = Handlebars.compile(templateStr);
var output = template(context);
expect(output).toBe('<div class="book-title">Lord of the rings</div>');
更好,但需要时间来定制handlebas编译器。以下代码需要添加到用于编译模板的脚本中,而不是在运行时。将此代码添加到编译代码中,而不是添加到运行时中(这不是助手)。然后,您只需编写{{model.title}},编译器就会自动将该表达式转换为model.get('title')。当然,如果"model"不是Backbone.model,那么它将像往常一样访问json属性。
Handlebars.JavaScriptCompiler.prototype.nameLookup = function(parent, name)
{
var result = '((typeof(Backbone)!="undefined" && ' + parent + ' instanceof Backbone.Model) ? ' + parent + '.get("' + name + '") : ' + parent;
if (/^[0-9]+$/.test(name))
{
return result + '[' + name + '])';
}
else if (Handlebars.JavaScriptCompiler.isValidJavaScriptVariableName(name))
{
return result + '.' + name + ')';
}
else
{
return result + '[''' + name + '''])';
}
};
相关文章:
- 在ember/handlers中使用value和valueBinding有什么区别
- Google闭包和生成的getters/ssetter
- Can't get setters/getters to work
- 用一个数组应用Chai可链接的getters
- JavaScript Getters and Setters issue
- handlers.js#每个数组.使用第一项作为标题
- 升级至Knockout 3.0.0,Templates/Custom Binding Handlers不再工作
- 使用handlers.js模板以数组中的最后一项为条件
- 添加“<strong>"到某个单词使用handlers.js
- setters and getters in javascript
- Javascript Getters And Setters
- JS getters:定义属性替换或补充旧的内联“get”“set”语法
- Javascript Handlers
- 为什么使用访问器(getters 和 setters)
- Getters and setters in javascript
- Getters and Setters on angular.extend $scope
- Javascript OOP, getters, setters, run - D3.js - 通过选项设置使图形可重用
- 节点模块作为getters和setters提供
- 什么'这个handlers.js代码有问题
- 如何在handlers.js模板中使用getters