【发布时间】:2012-09-14 13:07:06
【问题描述】:
使用Ember.CollectionView 我想访问和操作每个子视图插入的DOM 元素。我遇到的问题是我不知道如何从didInsertElement 中获取对元素的引用。这是the jsFiddle——coffeescript的摘要如下:
window.App = Ember.Application.create()
window.App.initialize()
App.Item = Em.View.extend
didInsertElement: () ->
console.log ">>> element is: ", this.element
App.items = Em.ArrayController.create()
App.items.set('content',[
Em.Object.create({title:"AN", id:"item-one"}),
Em.Object.create({title:"Epic", id:"item-two"}),
Em.Object.create({title:"View", id:"item-three"})
])
App.EpicView = Ember.CollectionView.extend
classNames: ['epic-view']
contentBinding: 'App.items'
itemViewClass: 'App.Item'
this.element 未定义。我也试过打电话给element,这也是未定义的。 According to the docs,视图中有一个元素属性可用,但我不知道如何访问它,我不确定它是否在didInsertElement 中可用。
如何获取刚刚插入到视图中的 DOM 元素的 id?理想情况下,我不想在 DOM 中搜索它,因为视图应该已经知道它在 DOM 中插入了什么。
ps:我正在使用 Ember 1.0pre
【问题讨论】:
-
你试过 this.get('element') 和 this.get('elementId') 吗?
-
是的,这行得通。我刚刚在文档中读到 ember 使用 get() 来访问任何地方的参数:p。如果您愿意,请将其添加为答案,以便我接受。谢谢!
-
我希望至少投反对票的人能够礼貌地说出如何改进我的问题。仅仅因为我错过了一件简单的事情并不意味着这是一个糟糕的问题。
-
我同意你的观点,我认为 stackoverflow 应该提供一个类似于编辑帖子时的选项,以便在投票时写在描述上!在 ember 中使用 'get' 可能是一件简单的事情,但在它之下,隐藏着一个关于如何在 javascript 中声明私有变量的概念
标签: coffeescript ember.js