从动态元素中获取淘汰视图的大小

时间:2013-10-16 17:34:21

标签: javascript jquery knockout.js d3.js coffeescript

在我的淘汰应用程序中,我有一部分类似于这种结构:

<section class="container">
  <section class="percent-sizes">
     <article class="d3Graph"></article>
  </section> 
  .
  .
  .
  <section class="percent-sizes">
     <article class="d3Graph"></article>
  </section> 
</section>

这些<sections>是动态的,可以动态创建。

基本上我有一堆<sections>占据屏幕的百分比部分,具体取决于有多少部分,然后在每一部分我都有d3图表,其中我必须知道像素尺寸才能绘制它们。

这些部分中的每一部分都有自己的ViewModel,容器也有自己的ViewModel,并且维护了它的子节点observableArray。

创建新的<section>时,我需要知道通过敲除<sections>的宽度/高度是什么并重绘它们。

这次淘汰赛的最佳做法是什么? (我不想手工计算百分比,或者使用jquery选择器来查找元素并手动查询它们的高度。)

1 个答案:

答案 0 :(得分:0)

为什么不将它们全部包含在observableArray中,只需将高度设置为计算值,例如 -

function whateverViewModel() {
    var self = this;
    self.height = ko.computed(function () {
        return (1 / sectionContainer.length);
    });
}

var sectionContainer = ko.observableArray();

sectionContainer.push(new whateverViewModel());

<section data-bind="style: { height: height }"></section>