wir*_*uma 8 javascript templates underscore.js
我有这个代码:
_.templateSettings = {interpolate : /\{\{(.+?)\}\}/g};
var _d = _.template($('#_d').html());
$.get('/foo', function(data) {
$('#output').html(_d(data));
});
Run Code Online (Sandbox Code Playgroud)
并在HTML中:
<div id="_d">
{{name}} {{phone}}
</div>
<div id="output"></div>
Run Code Online (Sandbox Code Playgroud)
/foo返回类似的东西{"name":"joe","phone":"12345"},但有时它没有phone简单的返回{"name":"joe"},这将阻止模板评估,因此没有任何内容被打印出来output.如何使变量可选?
编辑: /foo我无法控制
该||操作是这样的事情有用:
$.get('/foo', function(data) {
data.phone = data.phone || "";
$('#output').html(_d(data));
});
Run Code Online (Sandbox Code Playgroud)
但由于您已经在使用Underscore,因此您可以使用该_.defaults功能.此方法对于为多个字段提供默认值特别有用:
$.get('/foo', function(data) {
_.defaults(data, {name : 'joe', phone : ''});
$('#output').html(_d(data));
});
Run Code Online (Sandbox Code Playgroud)
我喜欢@namuol解决方案,我们可以做的另一件事是在模型扩展中设置默认值哈希
var MyModel = Backbone.Model.extend({
defaults: {
"foo": "I",
"bar": "love",
"yeah": "sara"
}
});
Run Code Online (Sandbox Code Playgroud)
只是另一种选择.
| 归档时间: |
|
| 查看次数: |
5171 次 |
| 最近记录: |