目前我遇到流星會議的麻煩,以及我的代碼如何觸發它來呈現模板。目前我有一個會話,它將._id設置爲任何被點擊的內容。流星會議試圖觸發模板渲染
Template.sidebar.events({
/* on click of current sidecat class change to sidecat selected */
'click .sidecat': function (event) {
Session.set("selected_project", this._id);
}
});
我有它添加一個CSS類如果selected_player等於div。
Template.sidebar.sidebarselected = function() {
return Session.equals("selected_project", this._id) ? "sidebarselected" : '';
}
現在我呈現一個模板,當有sidebarselected和另一個類存在。點擊該項目可呈現模板。
Template.sidebar.projectselected = function() {
var find = Session.get("selected_project");
var find2 = ($("#"+find).attr('class'));
/* if exists return true render the template */
if (find2 == 'project sidebarselected')
{
return true
}
/* else don't render it return null */
else {
return null
}
};
到目前爲止,一切都很好。 現在我有一個按鈕,它在列表中創建一個新項目,並使其成爲選定的項目。這是發生問題的時候。當我創建一個新的Item時,列表項被渲染,並且給出了sidebarselected的類,但是它不呈現應該被調用的模板。當我點擊一個項目時它會呈現模板。但是,當使用按鈕來創建一個新的列表項。它被選中但不呈現模板。這是代碼。
Template.sidebar.events({
/* add bar settings menu functions for clicks */
'click #newProject': function(event){
var create = NewProject();
Session.set("selected_project", create);
},
這是NewProject功能
/* add a new project to the side bar */
function NewProject() {
id = Aprojects.insert({
name: "New Project",
type: "project"
});
doc = Aprojects.findOne({_id:id});
return doc._id;
}
好就有了一切。項目是在我點擊按鈕時創建的,添加了類但模板未呈現。這是所有的JavaScript,如果html需要讓我知道,我會提供它。
讓我添加一些細節和html模板的東西。但是反正什麼不工作是
- 你可以在列表中選擇一個項目
- ,當你選擇一個項目(通過點擊它),它給了一個類的名稱,以表明它的選擇
- 當你點擊「新項目」你想添加一個項目到列表中,並立即選擇它
這一切工作正常。問題是點擊新的項目按鈕。它仍然會正確選擇新制作的項目,併爲其選擇一個類別。沒有發生的事情是,如果它發現selectedbar類也有它的一個類的項目。它呈現一個單獨的模板(projectpicked)。項目被點擊時,Projectpicked顯示出來。當#newproject被點擊時不是。即使通過它最終選定它不顯示項目選擇模板。讓我看看代碼是否可以做更多的談話。
<body>
{{> sidebar}}
</body>
<template name="sidebar">
{{#if aproject}}
{{#each aproject}}
<div class="sidecat {{sidebarselected}} project" id="{{divids}}">
{{name}}
</div>
{{/each}}
{{/if}}
{{#if projectselected}}
{{> projectpicked}}
{{/if}}
</template>
<template name="projectpicked">
project was picked from sidebar
</template>
應用程序邏輯和DOM結構組合背後的推理是我除了類別之外還有其他項目。我想通過使用會話得到的id,然後我們找出它是什麼類,它是像項目或類別,並顯示一個不同的模板基於它是什麼類。不知道它是否是最好的方式,但這是我想出的。接受建議。如果有些事不清楚,我不知道,我會盡力解釋它。謝謝您的幫助。
編輯我的帖子有更多的一些信息。 – asiammyself 2013-02-27 14:53:39
更新了我的答案回答您的更新:) – Rahul 2013-02-27 18:41:46
是啊,這還有我遇到的問題。當#newproject被點擊projectpicked沒有被創建。也許我會在今天晚些時候上傳.meteor.com上的例子。 – asiammyself 2013-02-27 20:17:20