- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
编辑:寻找一种在单击按钮以外的任何内容时关闭下拉列表的方法:http://jsfiddle.net/brennan/s4JTn/
我希望在我的 ember 应用程序中(重新)创建 Twitter 的下拉菜单。当单击下拉列表除外 时,我在尝试关闭下拉列表时遇到了一个特别的问题。 IE。我正在寻找一种方法来向我的应用程序添加事件监听器,以便在单击应用程序主体时关闭我的下拉菜单。
这是我( child )的观点。
categorySelect: Ember.View.extend({
isOpen: false,
selected: /* removed for brevity */,
content:[
/* removed for brevity */
/* follows structure: {slug: 1, title: 'title', isActive: true} */
],
dropdownToggle: function(e){
var open = this.get('isOpen');
if(open){
this.set('isOpen', false);
}else{
this.set('isOpen', true);
}
},
select: function(e){
var selected = e.context;
this.content.setEach('isActive', false);
this.set('selected', selected);
selected.set('isActive', true);
this.set('isOpen', false);
}
})
这是我的模板代码...
{{#view categorySelect tagName="div" class="btn-group" classBinding="isOpen:open"}}
<a class="btn dropdown-toggle btn-facebook btn-small" {{action "dropdownToggle" on="click"}} href="#">
{{selected.title}}
<span class="caret"></span>
</a>
<ul class="dropdown-menu pull-right">
{{#each content}}
<li {{bindAttr class="isActive:active"}}><a href="#" {{action "select" on="click"}}>{{title}}</a></li>
{{/each}}
</ul>
{{/view}}
我试过向正文添加事件监听器,如下所示,但不起作用。如果我单击任何 ember View ,Ember 似乎会停止传播。因此,虽然如果我直接单击正文它会起作用,但如果我单击我的任何 View 它就不起作用:(
didInsertElement: function(){
var self = this;
$('body').on('click', function(){
self.set('isOpen', false);
});
},
寻求帮助和建议。另外,如果上面的任何代码看起来像废话,请告诉我,我希望尽可能多地学习。
最佳答案
我的设置与您大致相同,也使用 didInsertElement 在 body 元素上创建事件监听器。
唯一不同的是我在 dropdownToggle 中有一个 e.stopPropagation() 调用:
dropdownToggle: function(e){
// [removed]
e.stopPropagation();
},
如果没有该行,我无法让下拉菜单保持打开状态,因为对下拉菜单的点击会传播到正文并立即将其关闭。
在我的设置中,点击 View 确实会传播到主体(因此上面的代码),并且点击其他 View 确实会触发主体上的事件监听器。
我猜你的其他 View 中是否有一些代码阻止传播到 body ?
尝试 http://jsfiddle.net/bjaeP/举个例子。
关于javascript - 在 Ember.js 中重新创建 Bootstrap Dropdown 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506983/
我正在尝试将 ember-models 链接到 ember-table,以从服务器提取分页记录,并在向下滚动时将它们添加到表中。 我可以通过请求我的 api url 和页码来让它工作,就像 http:
我有一个应用程序,它使用 ember-data 来持久化数据和 StateManager 来驱动其全局状态。由于加载数据是异步的,我想知道如何捕获表示所有数据都已加载的事件。 准确地说,我有一个名为“
我有一个简单的 Ember 应用程序,其中有一个输入框、两个选择框和一个按钮。我可以在“doSearch”方法中访问输入框的值,但不能访问选择框的值。 到目前为止,我没有尝试任何工作 - 我注释掉了我
我使用 Ember-CLI 来构建我的 ember 应用程序,但我不想使用 Ember Data。 默认情况下,当你输入这个命令:ember generate model Person 时,ember
我按照 Ember CLI 主页的说明创建了我的第一个 Ember CLI 插件。该插件运行良好,并且已经在 Github 上获得了几颗星:https://github.com/lolmaus/emb
我在这里看到的以前的问题似乎都没有涵盖何时使用 Ember 计算属性与 Ember Observer 的主题。我知道计算属性使用以前的属性来帮助生成新属性并在运行循环中更新。 Person = Emb
我一直在 git 分支上切换到 1.13.2 版本的 ember,现在我想在返回另一个分支时回到 1.11.1。 我一直在运行npm install和 bower install没有失败。 但是当我运
我有一个使用 ember-cli 构建的 Ember 应用程序我正在使用 ember-qunit 编写我的测试使用 testem 测试适配器并在浏览器中运行它们按照 ember-cli 中的说明文档。
项目设置: Ember:2.0.0 Ember 数据:2.0.0 Ember-cli:1.13.8 我创建了一个转换:转换/isodate.js import DS from 'ember-data'
假设我有一个具有 2 个属性的组件:我如何能够基于 localID 属性和 Ember.compulated.filterBy 宏创建计算属性? localID: 2, data: [ { i
我刚刚创建了一个新的 Ember-CLI app (v0.1.12),并注意到 Ember 的引用版本是 v1.8.1 (bower.json)。我想要 recently released 1.10我
使用最新的 Ember (3.2)、ember-cli-mirage 0.4.7、ember-cli-qunit 4.3.2、ember-qunit 3.4.1 我正在使用 ember-cli-mir
我是一名 ember 菜鸟,正在阅读 ember-cli 101 这本书。迄今为止,我一直在 ember-cli 网站 here 上使用升级工作流程。 。 在终端中使用 ember-cli 帮助时,我
如何测试我的组件,将 ember-data 模型作为 props 传递给它? 例如: {{#queue/review/moderatable-text model=activity property=
Ember 对象和 Ember Data 中的对象有什么区别?我知道当服务器上有一些数据时我应该使用 Ember Data 模型,但是我应该何时何地使用它们中的任何一个? 最佳答案 注意:这很长,有偏
执行ember -v仅显示ember cli版本。 如何查看 ember.js 版本和 ember 数据版本? 最佳答案 ember.js 和 ember-data 的版本由应用的依赖项决定。 Bow
我正在尝试在 Ember.RSVP.all 内执行 promise App.Foo = Ember.Object.create({ bar: function() { var
访问 ember 对象属性的首选方法是什么?我经常看到 .get() 方法被使用,但想知道为什么人们不只是使用点表示法。例如在 Advice in the Use of Ember Trek 先生写道
我知道 Ember 有一个记录器,但我想创建自己的用于学习目的。我有一个名为 logger 的服务,我希望能够在任何地方使用这个服务。将此服务注入(inject)到组件、 Controller 等中没
我刚刚关注了 ember-cli 主页上的“入门”帖子。 我安装了 ember 0.1.2、bower、phantomjs 等。 但是,我创建了我的应用程序,当我运行“ember server”时,它
我是一名优秀的程序员,十分优秀!