我试图将两个表绑定在一起,以便它们的元素的宽度和高度相同。不幸的是,每当我测量源表的宽度/高度时,我总是在浏览器更改单元格以匹配数据之前得到一个中间值。如果我可以从jquery的宽度和高度方法创建一个计算属性,那将会很棒。类似的东西:
width: ( ->
@$().width()
).property('@$().width()')
这甚至可能吗?看起来我应该能够在run循环中的某个地方调用jquery,与width的最后一个值进行比较,如果它们不同则发送elementDidChange。但是,我不知道该怎么做;)
谢谢!
答案 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}}
此外,如果窗口发生变化,您可以连接其他事件。