胡子.js带有数组,最后一项除外
Mustache.js with arrays, exception for the last item
var template = "multi: {{#answerVOs}}{{answer}}; {{/answerVOs}}";
//need => multi: option1; option2; option3 (末尾没有分号和空格)
var json = {
"answerswerVOs": [
{ "answerswer" : "option 1"
},
{ "answerswer" : "option 2"
},
{ "answerswer" : "option 3"
}
]
};
document.getElementById("answerswers").innerHTML = Mustache.to_html(template, json);
http://jsfiddle.net/casadev/GEbe8/1/
我需要显示数组中的最后一项,没有分号和空格,任何想法。
编辑:PHP代码
class ChoiceVO extends 'ValueObject {
public $id;
public $question;
public $answer;
public $answerformat;
public $fraction;
public $feedback;
public $feedbackformat;
public $replace = "function () { var result = ''; for( var i = 0; i < this.answers.length; i++ ) { result += this.answers[i].answer + (i !== this.answers.length - 1 ? '; ' : '');}return result;}";
function __construct($args=null) {
parent::__construct($args);
}
}
根据 Github 页面上的 Mustache.js 文档,可以将函数传递到数据中并使用模板标签调用它。所以你可以做的是这样的(请注意,这段代码是未经测试的):
var template = 'multi: {{listAnswers}}';
var context = {
answers: [
{ answer: 'Answer 1' },
{ answer: 'Answer 2' },
{ answer: 'Answer 3' }
],
listAnswers: function () {
var result = '';
for( var i = 0; i < this.answers.length; i++ ) {
result += this.answers[i].answer + (i !== this.answers.length - 1 ? '; ' : '');
}
return result;
}
};
document.getElementById('answers').innerHTML = Mustache.render(template, context);
经过一些反馈
要在解析 JSON 后添加函数,请执行以下操作:
var json = '{"answerswers":[{"answerswer":"Answer 1"},{"answerswer":"Answer 2"},{"answerswer":"Answer 3"}]}'; // Server response
var context = JSON.parse(json); // JSON parsed to JavaScript Object
// Add method in JavaScript, NOT PHP.
context.listAnswers = function () {
var result = '';
for( var i = 0; i < this.answers.length; i++ ) {
result += this.answers[i].answer + (i !== this.answers.length - 1 ? '; ' : '');
}
return result;
};
document.getElementById('answers').innerHTML = Mustache.render(template, context);
相关文章:
- 如何从对象数组中获取最后一项
- 为什么只有最后一项显示,而不是全部显示
- 删除最后一项jquery
- 为什么我的“for”循环只获取 html 中的最后一项
- 我无法将下拉列表的默认值设置为最后一项
- 流星批量插入仅插入最后一项
- 我怎么能知道元素是最后一项
- 如何删除WinJS组绑定列表的最后一项
- 使用handlers.js模板以数组中的最后一项为条件
- empty().append()追加循环中的最后一项
- jQuery只附加最后一项
- 将属性添加到 for 循环中的最后一项
- 如何按排序键顺序获取对象中的最后一项
- for 循环中的 addEventListener 始终添加到最后一项
- 从数组中删除最后一项
- CasperJS只从我的for循环中多次发布最后一项
- 在 JavaScript 中处理数组中的最后一项
- 胡子.js带有数组,最后一项除外
- 通过jQuery在最后一项之后插入
- JavaScript for 循环只返回数组中的最后一项