我開始使用把手和架構模式模型 - 視圖 - 視圖模型和我寫了這個代碼:減少代碼的使用Handlebars.js
var data = {
currentPlayer: this._model.currentPlayer,
line: [
{
row:
[
{
caseNumber:1,
caseValue: this._model.getCaseState(0,0)
},
{
caseNumber:2,
caseValue: this._model.getCaseState(0,1)
},
{
caseNumber:3,
caseValue: this._model.getCaseState(0,2)
}
]
},
{
row:[
{
caseNumber:4,
caseValue:this._model.getCaseState(1,0)
},
{
caseNumber:5,
caseValue:this._model.getCaseState(1,1)
},
{
caseNumber:6,
caseValue:this._model.getCaseState(1,2)
}
]
},
{
row:[
{
caseNumber:7,
caseValue:this._model.getCaseState(2,0)
},
{
caseNumber:8,
caseValue:this._model.getCaseState(2,1)
},
{
caseNumber:9,
caseValue: this._model.getCaseState(2,2)
}
]
}
]
};
var htmlContent = this._template(data);
this._element.html(htmlContent);
用下面的模板:
<div>
<h3>It is to player {{currentPlayer}}</h3>
<table>
{{#each line}}
<tr>
{{#row}}
<td data="{{caseNumber}}" class="case{{caseValue}}">{{caseValue}}</td>
{{/row}}
</tr>
{{/each}}
</table>
</div>
這段代碼工作正常,但我問我是否不能減少它。所以我試圖在var數據中使用for循環,但我意識到我無法做到這一點。 我的另一個選擇就是在這樣的模板,如果使用:通過測試VAR caseValue
的價值
{{#each line}}
<tr>
{{#row}}
{{#if caseValue}}
<td data="{{caseNumber}}" class="case{{caseValue}}">O</td>
{{else}}
<td data="{{caseNumber}}" class="case{{caseValue}}">X</td>
{{/if}}
{{/row}}
</tr>
{{/each}}
。但是,由於caseValue
取值爲1
或0
或undefined
,如果未檢查大小寫,則所有單元格均填充「X」。 因此,我無法找到一個緊湊的解決方案,其目的是:
- 開始時,所有的TD標籤都是空的。
- 取決於
getCaseState
的值,該值返回0
或1
填充 具有「X」或「O」的單元格。
編輯:我管理的getCaseState
不同的值與此代碼:
Handlebars.registerHelper('displayTd', function(data) {
var result;
if(data.caseValue === undefined) {
result = '<td data="' + data.caseNumber + '"></td>';
return new Handlebars.SafeString(result);
} else if(data.caseValue === 1) {
result = '<td data="' + data.caseNumber + '" class="case' + data.caseValue + '">X</td>';
return new Handlebars.SafeString(result);
} else {
result = '<td data="' + data.caseNumber + '" class="case' + data.caseValue + '">O</td>';
return new Handlebars.SafeString(result);
}
});
謝謝你很多關於你很大的幫助(和修復我的英語錯誤^^)。我從來沒有想過數據建設的解決方案。對於我的模板中的條件,我試過這個:[看我的編輯],但你的解決方案看起來更好。 – Lodec