有一些反應性我只是不明白,特別是與列表。我的問題可以通過排行榜例子來最容易模仿(meteor --create example leaderboard
)反應性,隔離性和清單
首先,它添加到客戶端的js(如在http://listtest.meteor.com/完成):
Template.player.rendered = function() {
console.log('Player rendered');
}
...然後看控制檯當你運行該應用程序。當你切換選定的科學家時,你會注意到每個玩家都會重新渲染,即使它不需要。
感謝IRC的一些幫助,我發現子模板或#isolating主模板的底部如下(並在http://listtest2.meteor.com/解決了效率低下問題,換句話說,當選擇不同的玩家時,只有兩個玩家現在重新呈現:新選擇和取消
<head>
<title>Leaderboard</title>
</head>
<body>
<div id="outer">
{{> leaderboard}}
</div>
</body>
<template name="leaderboard">
<div class="leaderboard">
{{#each players}}
{{> player}}
{{/each}}
</div>
{{#isolate}}
{{#if selected_name}}
<div class="details">
<div class="name">{{selected_name}}</div>
<input type="button" class="inc" value="Give 5 points" />
</div>
{{/if}}
{{#unless selected_name}}
<div class="none">Click a player to select</div>
{{/unless}}
{{/isolate}}
</template>
<template name="player">
<div class="player {{selected}}">
<span class="name">{{name}}</span>
<span class="score">{{score}}</span>
</div>
</template>
我的問題是:爲什麼隔離模板的不同部分會導致不同子模板的行爲改變
感謝?這麼多,
可能是因爲通過隔離「細節」部分中的更改而停止父模板「排行榜」來渲染,因此您不必渲染其所有子模板。這就是[這裏]所說的(http://stackoverflow.com/a/13208254/728291),但沒有信息來源。非常好的問題。 – user728291
可能相關:https://github.com/meteor/meteor/issues/1210 – imslavko