Ember.js - 如何获得元素的宽度?

时间:2013-08-03 14:41:40

标签: javascript jquery ember.js

我正在接触Ember.js但可以做一些提示......

我想创建一个 div 的视图,其中嵌入了 ul 。在渲染之前,我想看看父 div 有多宽,并计算要添加到 ul ul 的数量for loop。

在我挣扎的时候,你能帮忙建议最好的方法!

干杯!

2 个答案:

答案 0 :(得分:2)

确定width的{​​{1}}的方法是挂钩view

didInsertElement

对于您的用例,App.IndexView = Ember.View.extend({ willInsertElement: function() { console.log(this.$().css('width')); }, didInsertElement: function() { console.log(this.$().css('width')); } }); 更具相关性,因为它会在willInsertElement之前调用,但此时didInsertElement尚未计算。

以下是一个可以使用的示例jsbin

希望它有所帮助。

答案 1 :(得分:1)

对您的代码了解不多,这是非常快速和基本的示例。希望它会给你一些指导,你可以适应它。

我们的想法是在视图上使用didInsertElement事件,在将事件插入DOM时调用该事件,然后您可以使用this.$()获取该视图的DIV的JQuery对象。 / p>

App.SomeKindOfView = Ember.View.extend({
  //-snip-
  didInsertElement: function()
  {
    this._super();
    var parentWidth = this.$().parents('div').width();
    //do some fancy caculation with parentWidth
    //then save the result on the View or Controller...
  }
  //-snip-
});

在模板中你可以有类似的东西(因为它默认由DIV包装:

<ul>
  {{#each item in controller}}
    <li>{{item.someContent}}</li>
  {{/each}}
</ul>