gpt4 book ai didi

ember.js - View 中的处理操作不是路由器

转载 作者:行者123 更新时间:2023-12-04 09:26:34 25 4
gpt4 key购买 nike

我有一个 View ,其中包含可展开/可折叠的内容,我希望能够通过单击表格行上的 进行切换。在 pre1.0 之前,我在模板中有这个:

<tr {{action "expand"}}>

以前根据我的观点处理过:
App.ContentRowView = Em.View.extend({
templateName: 'ember/templates/content/row',
expand: function() {
this.set('isExpanded', !this.get('isExpanded'));
},
isExpanded: false
});

但是,升级到 pre1.0 后,该操作现在由路由器直接执行。这在很多情况下都有意义,但在这种情况下,扩展实际上是一个 View 问题。我试过用点击事件处理程序替换它,但没有运气。

是否有关于如何使用 pre1.0 处理这样的 View 关注事件的最佳实践?

最佳答案

弃用的答案

即使@outside2344 的答案有效,我认为也不完全正确。
确实parentView不代表 View ,而是其父 View 的父 View 。
从 1.0-pre 开始, View 保留它们的上下文,所以在模板中,this代表父 View ,parentView代表parentView.parentView , 和 view代表当前 View 。
这是一个 fiddle 来说明这一点:http://jsfiddle.net/Sly7/cnmJa/

对我来说答案是 {{action expand target="view"}}
编辑 (回答@Gal Ben-Haim)

Action 助手在基于路由器的应用程序中的行为几乎没有什么不同。从文档中引用:

In Router-driven applications, if an action is not intercepted by a view, that event will bubble up to the Route in which that view was rendered. If that Route is a sub-route of another Route the transition will be sought there all the way up to the top-level Route definition, our über-container: root.

This bubbling effect allows certain actions to remain private. If certain transitions should only be available for certain sub-sub-states, put the transition on the sub-state and you've achieved a type of scoping.



基本上,对我来说这意味着在 路由器驱动的应用程序 如果你没有在 Action 助手中明确定义一个目标,它就会被发送到路由器。

更新答案

我认为现在指南很好地回答了这个问题。见 http://emberjs.com/guides/templates/actions/#toc_specifying-a-target

关于ember.js - View 中的处理操作不是路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11887836/

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