私はBackbone.jsで手を試していましたが、うまくいきませんでした。そのため、ゼロから始めて、JavaScriptを使用してOOPに頭を悩ませることにしました。今では、テンプレートでかなりうまくいっていると思いました。レンダリングされないだけで、テンプレート、js、両方、またはデータに問題があるかどうかわかりません!!
私のテンプレート:
<script id="BudgetItemTemplate" type="text/x-handlebars-template">
{{#list data}}
<div class="budget-item">
<div class="item-info">{{type}}</div>
<div class="item-spent">{{spent}}</div>
<div class="item-budget">{{budget}}</div>
</div>
{{/list}}
</script>
私のJavaScript:
var data = [];
var BudgetItems = [data];
var BudgetItemTemplateSource = $('#BudgetItemTemplate').html();
var BudgetItemTemplate = Handlebars.compile(BudgetItemTemplateSource);
function BudgetItem(type, spent, budget) {
"use strict";
this.type = type;
this.spent = spent;
this.budget = budget;
this.editType = function (type) {
this.type = type;
return this;
};
this.editSpent = function (spent) {
this.spent = spent;
return this;
};
this.editBudget = function (budget) {
this.budget = budget;
return this;
};
data.push({type: 'type', spent: 'spent', budget: 'budget'});
}
function BudgetItemList() {
this.BudgetItems = BudgetItems;
this.render = function () {
console.log('rendercalled')
$('#iBudget').empty();
$('#iBudget').append(BudgetItemTemplate(BudgetItems));
};
};
$(document).ready(function () {
var food = new BudgetItem('food', '0.00', '10.00');
var drink = new BudgetItem('drink', '10000.00', '450.00');
var bills = new BudgetItem('bills', '30.00', '50.00');
console.log(food.budget);
food.editType('basics');
console.log(food.type);
console.log(BudgetItems);
var budgetlist = new BudgetItemList();
budgetlist.render();
console.log(BudgetList.BudgetItems);
});
テンプレートがレンダリングされない理由を理解できません。データを設定するいくつかの異なる方法を試しました。現時点では、データは配列の配列ですが、配列。また、テンプレートでは、コンテキストとコンテキストなしの両方で「リスト」ヘルパーを使用してみた場合、両方のデータの場合です。デバッグにアラートを使用しましたが、問題はハンドルバーにあるようですが、理解できません。コメント、批評、助けをいただければ幸いです。