gpt4 book ai didi

meteor - 我不知道 Meteor {{#isolate}} 到底是什么。有没有例子?

转载 作者:行者123 更新时间:2023-12-01 10:58:35 25 4
gpt4 key购买 nike

如何使用{{#isolate}}?

如果我用一堆模板制作一个页面,例如:

{{> page1}}

<template name="template1">reactive source1</template>
<template name="template2">reactive source2</template>
<template name="template3">reactive source3</template>
<template name="template4">reactive source4</template>
<template name="template5">reactive source5</template>

<template name="page1">
{{> template1}}
{{> template2}}
{{> template3}}
{{> template4}}
{{> template5}}
</template>

如果每个单独的模板都有更新的内容,它会每次都重新呈现整个页面吗?我该如何阻止这种情况发生?

在这种情况下我应该使用isolate吗?

如果我将任何助手绑定(bind)到这些模板,例如:

Template.template1.rendered = ->
console.log 'rendered at: ' + new Date().getTime()

它至少会渲染 5 次,因为我有 5 个 react 源。如果他们每个人都包括一个 react 列表,它将呈现 docs.length 次。

我无法控制单个模板实例。

对不起我的英语。

这是我之前在 GitHub 上发布的与此相关的问题:https://github.com/meteor/meteor/issues/435

最佳答案

if each single template has content update it will rerender the whole page ?

不会,但是会触发其父级的所有渲染事件!实际上,呈现的事件像 dom 事件一样传播。当特定模板中的响应式(Reactive)数据发生变化时,其及其所有子模板的内容将被重新渲染!但不是他的 parent !那么“恒定”和“隔离”有什么作用呢?我认为弄清楚它们的最好方法是做一些测试。这是一个简单的测试:HTML:

    <head>
<title>meteor_test</title>
</head>

<body>
{{> main}}
</body>

<template name="main">
This is main template!
{{> subA}}
{{> subB}}
</template>

<template name="subA">
<div>
----This is subA! Input is surrounded by "constant"!
{{#constant}} <input /> {{/constant}}
Reactive data: {{reactiveData}}
{{> subA_A}}
</div>
</template>

<template name="subA_A">
<div>
--------This is subA_A!
<input type="text" />
Reactive data: {{reactiveData}}
</div>
</template>

<template name="subB">
<div>
----This is subB! Reactive data is surrounded by "isolate"!
<input type="text" />
Reactive data: {{#isolate}} {{reactiveData}} {{/isolate}}
{{> subB_A}}
</div>
</template>

<template name="subB_A">
<div>
--------This is subB_A!
<input type="text" />
Reactive data: {{reactiveData}}
{{> subB_A_A}}
</div>
</template>

<template name="subB_A_A">
<div>
------------This is subB_A_A!
<input type="text" />
Reactive data: {{reactiveData}}
</div>
</template>

js:

if (Meteor.isClient) {
Template.main.rendered = function () {
console.log('main is rendered at %s', new Date());
};

Template.subA.helpers({
reactiveData: function () {
return Session.get('subA');
}
});
Template.subA.rendered = function () {
console.log('subA is rendered at %s', new Date());
};

Template.subB.helpers({
reactiveData: function () {
return Session.get('subB');
}
});
Template.subB.rendered = function () {
console.log('subB is rendered at %s', new Date());
};

Template.subA_A.helpers({
reactiveData: function () {
return Session.get('subA_A');
}
});
Template.subA_A.rendered = function () {
console.log('subA_A is rendered at %s', new Date());
};

Template.subB_A.helpers({
reactiveData: function () {
return Session.get('subB_A');
}
});
Template.subB_A.rendered = function () {
console.log('subB_A is rendered at %s', new Date());
};

Template.subB_A_A.helpers({
reactiveData: function () {
return Session.get('subB_A_A');
}
});
Template.subB_A_A.rendered = function () {
console.log('subB_A_A is rendered at %s', new Date());
};
}

使用 chrome/firebug 的控制台更改 session 数据,看看会发生什么。关注reactive变化时这些input中输入的文本是否会被清空(即重新渲染),是否触发渲染事件。

……对不起我的英语也不好^_^

关于meteor - 我不知道 Meteor {{#isolate}} 到底是什么。有没有例子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13155220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com