以下視圖中的大部分渲染函數都是無關緊要的,我認爲,但我爲了完整性而離開它。我正在瀏覽一系列工作流程步驟,注意根據事物的各種狀態來切換li
的類。爲什麼我的骨幹視圖渲染「undefined」在頂部?
var WorkStepView = Backbone.View.extend({
className: "workflowStep",
render: function() {
var output;
var arrowPlaced = false;
var self = this;
i = 0;
_.each(this.collection.models, function(s) {
var post = "";
var classname = '';
if (s.attributes["complete"] != 1) {
if (! arrowPlaced) {
classname = "current";
if (s.attributes["adminCompletable"] == 1) {
post = ' - <input onClick="completeStep(' + i + ');" type="button" value="Completed" />';
}
arrowPlaced = true;
}
else {
classname = "future";
}
}
else {
classname = "past";
}
output += '<li class="' + classname + '">' + s.attributes["description"] + post + '</li>';
i++;
});
this.el.innerHTML = output;
return this;
},
});
當用戶從頁面上其他地方的列表中選擇一個資產時,它會產生一堆包含這些東西的數據。資產「擁有」一個工作流程,「有」很多步驟。步驟數據存儲在window.Steps,然後這就是所謂的:
function populateSteps() {
window.workStepLists = new WorkStepView({
collection: window.Steps,
el: $('#workflowSteps')[0],
});
workStepLists.render();
}
但後來我得到這個:
有這多餘的「不確定」那裏在列表的頂部。在獲取和渲染這個模型之前,它並不存在。我根本不知道這是怎麼回事。
幫助?
剛一說明:你應該做的事's.get( 「PROPNAME」)'代替's.attributes [ 「PROPNAME」]' 。我不認爲這是一個問題,但我想我會指出。 –
另外,使用Underscore'each'函數的首選方法是this.collection.each(function(){});'但這實際上只是選擇nits。 –
如果在循環後執行'console.log(output)',它看起來像什麼? –