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
Events Ember:为动作助手指定目标动作视图,而不是包含或父视图_Events_Ember.js_Ember.js View - Fatal编程技术网

Events Ember:为动作助手指定目标动作视图,而不是包含或父视图

Events Ember:为动作助手指定目标动作视图,而不是包含或父视图,events,ember.js,ember.js-view,Events,Ember.js,Ember.js View,在Ember中,如果您希望一个操作由一个视图处理,那么使用 <button {{action 'something' target='view'}}> `{{view App.targetView}}` // this is the view in which the 'something' action ought to be handled 在哪里 {{view App.targetView viewName="targetView"}} 那是行不通的。也没有 target

在Ember中,如果您希望一个操作由一个视图处理,那么使用

<button {{action 'something' target='view'}}>
`{{view App.targetView}}` // this is the view in which the 'something' action ought to be handled
在哪里

{{view App.targetView viewName="targetView"}}
那是行不通的。也没有

target ='views.targetView' nor 'childViews.targetView'
请不要指导我更改我的应用程序的语义结构,因为我认为带有此操作的按钮需要位于app.targetView模板中,这是对我的应用程序语义结构的一种攻击和破坏


我需要知道的是如何使用target属性来指定特定的视图,而不仅仅是包含或父视图:)?

老实说,我的本能反应是“好吧,不要那样做”。但是,我要暂停怀疑,并规定你们有一个很好的理由想要这么做

您的方法不起作用的原因是在模板的上下文(默认情况下是控制器)中计算
target
属性路径。解决方案:在属性路径中使用
view
关键字,并链接目标视图的viewName

e、 g

点击我
{{view App.TargetView viewName=“TargetView”}

是的,我完全知道,按钮存在于视图之外。但是他们操纵这个特定的视图,试图将它们放在这个视图中,这对我的语义敏感性提出了挑战。如果按钮存在于视图之外,则让它向视图共享访问权限的控制器发送操作。控制器中处理的操作将更新视图随后将相应响应的属性。e、 g.你觉得这是一个比简单地让按钮指定它应该操作哪个视图更好的策略吗?如果只是纯粹的视图响应,那么向控制器发送操作请求就有点过火了。在我看来,控制器对视图一无所知,因此发送一个由控制器处理的操作,然后再将该操作传递给它的一个视图,这是违反直觉的。另外,如果一个是另一个的子视图,那么您的解决方案也可以正常工作,但如果用户未对此进行处理,则无法正常工作。我在我的按钮操作目标属性中使用了view.parentView.targetView。工作:)
target ='views.targetView' nor 'childViews.targetView'
<button {{action "foo" target="view.targetView"}}>Click me</button>
{{view App.TargetView viewName="targetView"}}