Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript meteor:在特定上下文中呈现模板_Javascript_Meteor - Fatal编程技术网

Javascript meteor:在特定上下文中呈现模板

Javascript meteor:在特定上下文中呈现模板,javascript,meteor,Javascript,Meteor,我有两个模板 <body> {{>tmpl1}} {{>tmpl2}} .... </body> tmpl1显示如下 <template name="tmpl1"> {{#each items}} {{title}} {{/each}} .... </template> 关于如何将tmpl1中的选定项与tmpl2链接的任何建议?首先,将模板放入容器中,以便可以操作上下文

我有两个模板

<body>
    {{>tmpl1}}
    {{>tmpl2}}
    ....
</body>
tmpl1
显示如下

<template name="tmpl1">
    {{#each items}}
        {{title}}
    {{/each}}
    ....
</template>

关于如何将
tmpl1
中的选定项与
tmpl2
链接的任何建议?

首先,将模板放入容器中,以便可以操作上下文。另外,将详细信息模板放在一个带有上下文的
#中:

<template name="box">
  {{> list}}
  {{#with item}}
    {{> details}}
  {{/with}}
</template>
编写处理程序:

Template.box.events({
  'click .listItem': function(e, t) {
    t.data.itemId = $(e.target).data('id');
    t.data.itemDep.changed();
  }
});
最后,为所选项目创建数据帮助器和依赖项:

Template.box.created = function() {
  this.data.itemDep = new Deps.Dependency();
};

Template.box.item = function() {
  this.itemDep.depend();
  return Items.findOne(this.itemId);
};

首先,将模板放入容器中,以便可以操纵上下文。另外,将详细信息模板放在一个带有上下文的
#中:

<template name="box">
  {{> list}}
  {{#with item}}
    {{> details}}
  {{/with}}
</template>
编写处理程序:

Template.box.events({
  'click .listItem': function(e, t) {
    t.data.itemId = $(e.target).data('id');
    t.data.itemDep.changed();
  }
});
最后,为所选项目创建数据帮助器和依赖项:

Template.box.created = function() {
  this.data.itemDep = new Deps.Dependency();
};

Template.box.item = function() {
  this.itemDep.depend();
  return Items.findOne(this.itemId);
};

首先,将模板放入容器中,以便可以操纵上下文。另外,将详细信息模板放在一个带有上下文的
#中:

<template name="box">
  {{> list}}
  {{#with item}}
    {{> details}}
  {{/with}}
</template>
编写处理程序:

Template.box.events({
  'click .listItem': function(e, t) {
    t.data.itemId = $(e.target).data('id');
    t.data.itemDep.changed();
  }
});
最后,为所选项目创建数据帮助器和依赖项:

Template.box.created = function() {
  this.data.itemDep = new Deps.Dependency();
};

Template.box.item = function() {
  this.itemDep.depend();
  return Items.findOne(this.itemId);
};

首先,将模板放入容器中,以便可以操纵上下文。另外,将详细信息模板放在一个带有上下文的
#中:

<template name="box">
  {{> list}}
  {{#with item}}
    {{> details}}
  {{/with}}
</template>
编写处理程序:

Template.box.events({
  'click .listItem': function(e, t) {
    t.data.itemId = $(e.target).data('id');
    t.data.itemDep.changed();
  }
});
最后,为所选项目创建数据帮助器和依赖项:

Template.box.created = function() {
  this.data.itemDep = new Deps.Dependency();
};

Template.box.item = function() {
  this.itemDep.depend();
  return Items.findOne(this.itemId);
};


Hrm,您是否尝试过tmpl2的点击事件,该事件通过Meteor.call()从tmpl1获取数据子集?或者tmpl2中的把手助手,每当tmpl1-中的meteor会话发生更改时,该助手会反应性地加载?不,流星对我来说是很新的。因此,从您的建议来看,在
项上
单击我将在
会话
上放置一些东西,
tmpl2
将检索并显示这些东西?不要出于这种目的使用
会话
:它相当于一个好的旧全局变量。改为使用模板数据-参见下面我的答案。Hrm,您是否尝试过tmpl2的点击事件,该事件执行Meteor.call()从tmpl1获取数据子集?或者tmpl2中的把手助手,每当tmpl1-中的meteor会话发生更改时,该助手会反应性地加载?不,流星对我来说是很新的。因此,从您的建议来看,在
项上
单击我将在
会话
上放置一些东西,
tmpl2
将检索并显示这些东西?不要出于这种目的使用
会话
:它相当于一个好的旧全局变量。改为使用模板数据-参见下面我的答案。Hrm,您是否尝试过tmpl2的点击事件,该事件执行Meteor.call()从tmpl1获取数据子集?或者tmpl2中的把手助手,每当tmpl1-中的meteor会话发生更改时,该助手会反应性地加载?不,流星对我来说是很新的。因此,从您的建议来看,在
项上
单击我将在
会话
上放置一些东西,
tmpl2
将检索并显示这些东西?不要出于这种目的使用
会话
:它相当于一个好的旧全局变量。改为使用模板数据-参见下面我的答案。Hrm,您是否尝试过tmpl2的点击事件,该事件执行Meteor.call()从tmpl1获取数据子集?或者tmpl2中的把手助手,每当tmpl1-中的meteor会话发生更改时,该助手会反应性地加载?不,流星对我来说是很新的。因此,从您的建议来看,在
项上
单击我将在
会话
上放置一些东西,
tmpl2
将检索并显示这些东西?不要出于这种目的使用
会话
:它相当于一个好的旧全局变量。改用模板数据-见下面我的答案。我还没有完全掌握依赖对象是如何伴随数据值的,但我喜欢干净的方法。很好的解决方案。此刻,我正试图让这个想法发挥作用。我现在正在努力解决的一件事是
this.data===undefined
。有什么建议吗?我看到了
这个===window
。另外,如果我用一种方法定义this.data,它在另一种方法中就消失了:(然而,当我在
Template.box.data
上定义
data
对象时,它就起作用了。我是不是遗漏了什么?@gamengineers:很简单,依赖对象可以用来跟踪任何你想要的变化,你只需要1)调用
dep.changed()
无论何时更改跟踪对象值,以及
dep.dependen()
在值更改时应更新的被动位置。在这种情况下,我只是创建一个任意依赖项对象来跟踪
值,并将其本地存储在模板数据中。@JeanlucaScaljeri:我不完全理解为什么会发生这种情况,如果您通过定义
template.data.box
让它工作,那就太好了。我记得,这在某种程度上取决于模板的调用方式,也就是说,您是在顶层调用
{{>template}
,还是在
{{{{each}}
{{with}
块中调用,还是通过
template.template()
调用。我还没有完全掌握依赖对象是如何伴随数据值的,但我喜欢干净的方法。很好的解决方案。此刻,我正试图让这个想法发挥作用。我现在正在努力解决的一件事是
this.data===undefined
。有什么建议吗?我看到了
这个===window
。另外,如果我用一种方法定义this.data,它在另一种方法中就消失了:(然而,当我在
Template.box.data
上定义
data
对象时,它就起作用了。我是不是遗漏了什么?@gamengineers:很简单,依赖对象可以用来跟踪任何你想要的变化,你只需要1)调用
dep.changed()
无论何时更改跟踪对象值,以及
dep.dependen()
在值更改时应更新的被动位置。在这种情况下,我只是创建一个任意依赖项对象来跟踪
值,并将其本地存储在模板数据中。@JeanlucaScaljeri:我不完全理解为什么会发生这种情况,如果您通过定义
template.data.box
让它工作,那就太好了。我重唱