Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Ember.js 反思余烬中的子组件_Ember.js_Ember Cli - Fatal编程技术网

Ember.js 反思余烬中的子组件

Ember.js 反思余烬中的子组件,ember.js,ember-cli,Ember.js,Ember Cli,如果列表中包含两个组件: 我的列表 my item 但假设列表中可能包含两种类型的“项”,因此还有另一个组件: 我的其他项目 在运行时,我用以下内容实例化我的列表: {{my-list items=items type='my-other-item'}} if(App[type]._aspects === 'foo') { ... } 我希望我的my list组件能够对已选择的项目组件进行一些内省,并做出适当的反应。在我的示例中,假设每个项目组件都有一个名为\u aspects的元属

如果列表中包含两个组件:

  • 我的列表
  • my item
但假设列表中可能包含两种类型的“项”,因此还有另一个组件:

  • 我的其他项目
在运行时,我用以下内容实例化我的列表:

{{my-list items=items type='my-other-item'}}
if(App[type]._aspects === 'foo') { ... }
我希望我的
my list
组件能够对已选择的项目组件进行一些内省,并做出适当的反应。在我的示例中,假设每个项目组件都有一个名为
\u aspects
的元属性,我想做如下操作:

{{my-list items=items type='my-other-item'}}
if(App[type]._aspects === 'foo') { ... }
其中“type”是项组件的名称。以前有人解决过这个问题吗

我之所以包含'ember cli'标记以及'ember',只是因为我的问题可能与没有完全理解cli的解析器有关


您可以使用Ember 1.11中介绍的组件帮助器,它允许您根据绑定值决定应渲染哪个组件:

这里有一篇关于这个主题的文章。底部附近的选项C就是您要寻找的:

HTML:


您是否在块形式中使用ur组件?您可以使用类似这样的东西在“init”或“willInsertElement”上将您的子组件注册到您的父组件。get('parentView')。注册(this)。这里的“register”将是您在父组件中定义的一个方法,它只保留传入的子组件数组。@blessenm是的,类似这样的东西就是我所想的。WRT到块或内联表单的答案是两者都有。在90%的情况下,内联表单将更加紧凑并满足需要,但切换到块模式可以在需要的地方提供更丰富的选项集。“parentView”属性是否始终可用于在另一个组件块中实例化的组件?我认为parentView始终可用。到目前为止,它对我很有效。您还可以使用组件的
nearestWithProperty
或“nearestOfType”方法来查找祖先。Ben Lesh将此技术用于他的组件。我和您一样热衷于组件助手,我正在使用它。事实上,在某种程度上正是因为这个原因,我才试图解决这个问题。你看,一旦你抽象了项组件,你就需要辨别底层项关心哪些属性。因此,项目a组件可能关心
颜色和
样式属性,而项目b关心
图像和
foobar
。我希望列表组件通过某种机制了解其子组件的需求。没有它,您可能会有很多额外的观察者和参数传递。希望这有道理,我明白了。我不知道您的具体用例,但这感觉可能与框架的纹理背道而驰。你能用你希望实现的更多信息更新你的问题吗?我的目标是,父母应该尽可能少地了解孩子组件的各种需求,同时仍然为孩子提供他们所需要的灵活性。@blessenm在问题注释中引入的注册模式是解决此问题的标准方法,但我想知道人们是否推荐其他方法。这可以通过组件帮助器完成。子组件可以关心他们想要的任何东西,而父组件不需要知道。就我而言,这种方法完全符合你的要求。希望其他人会提供一个完全不同的解决方案,做同样的事情。我不清楚。。。列表确实需要了解项目类型的具体信息,但要以通用/可重用的方式进行。;)