我可以从jquery函数创建一个ember计算属性吗?

时间:2014-06-11 00:50:22

标签: jquery css ember.js

我试图将两个表绑定在一起,以便它们的元素的宽度和高度相同。不幸的是,每当我测量源表的宽度/高度时,我总是在浏览器更改单元格以匹配数据之前得到一个中间值。如果我可以从jquery的宽度和高度方法创建一个计算属性,那将会很棒。类似的东西:

width: ( ->
  @$().width()
).property('@$().width()')

这甚至可能吗?看起来我应该能够在run循环中的某个地方调用jquery,与width的最后一个值进行比较,如果它们不同则发送elementDidChange。但是,我不知道该怎么做;)

谢谢!

1 个答案:

答案 0 :(得分:0)

不,你不能这样附上它。

您可以附加到视图上的事件列表。

http://emberjs.com/guides/understanding-ember/the-view-layer/#toc_adding-new-events

didInsertElement上设置宽度,你也可以afterRender执行App.FooView = Em.View.extend({ setupWidth: function(){ var el = this.$(), self = this; this.set('width', self.width()); Em.run.scheduleOnce('afterRender', function(){ self.set('width', self.width()); }); }.on('didInsertElement') }); ,直到渲染完所有内容后才能运行它。

{{1}}

此外,如果窗口发生变化,您可以连接其他事件。