1

我正在尝试访问父母数据上下文

为了实现它,我有一条看起来像这样的线:-

template.view.parentView.parentView.parentView.parentView.dataVar.curValue

在 UI 方面,我有

template[dataIwant] 呈现另一个模板,带有一个使用 autoform 的模态对话框

然后我使用 autoform 钩子来获取一个 before save 事件,我想用它来为正在保存的文档添加一个额外的值。

然后我将在钩子中传递的模板返回到顶部模板。似乎我应该能够以更优雅的方式做到这一点?

4

1 回答 1

1

今天想出了这段代码,因为我也需要它:

_.extend(Blaze.View.prototype,{
  closest: function(searchedViewName){
    currentView = this;
    while (currentView && currentView.name != searchedViewName){
      currentView = currentView.parentView;
    }
    return currentView;
  }
});

<template name="parent">
  {{> child}}
</template>

Template.parent.created = function(){
  this.reactiveVar = new ReactiveVar(false);
};

<template name="child">
  {{parentName}}
  {{parentVar}}
</template>


Template.child.helpers({
  parentName:function(){
    return Template.instance().view.closest("parent").name;
  },
  parentVar:function(){
    return Template.instance().view.closest("parent")._templateInstance.reactiveVar.get();
  }
});

到目前为止一切都很好,但我已经发现了这不起作用的用例(在模板定义中使用 Template.contentBlock 会因为某种未知原因破坏整个事情)。

于 2014-11-04T22:01:11.263 回答