首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ampersand.js中同一类的多个子视图

Ampersand.js中同一类的多个子视图
EN

Stack Overflow用户
提问于 2016-01-13 05:31:20
回答 1查看 137关注 0票数 0

我正在尝试向Ampersand.js中的视图添加多个子视图,其中的子视图是相同类型的。然而,与符号似乎只允许我拥有一个类类型的对象,并且声明第二个对象会覆盖第一个对象的所有属性。例如:

代码语言:javascript
复制
var chart1 = new PieChart('userChart');
var chart2 = new PieChart('deviceChart');

module.exports = PageView.extend({
  pageTitle: 'Home',
  template: require('../../../templates/pages/home.hbs'),
  render: function() {
    this.renderWithTemplate();
    this.renderSubview(chart1, document.getElementById('userChart'));
    this.renderSubview(chart2, document.getElementById('deviceChart'));
  }
});

将仅呈现第二个图表,但是如果我注释掉第二个图表,则第一个图表将呈现良好。在检查对象时,两者都使用'deviceChart'作为参数。我已经尝试创建了一个全新的类PieChart2,这就解决了这个问题,但是为我想要显示的每一种图表创建一个全新的类将是荒谬的。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-08 20:56:54

我想你的PieChart在某个地方出了问题。我试着重现你的问题,一切都很好,正如预期的那样。以下是我的工作代码:

代码语言:javascript
复制
var OneView = View.extend({//analogous to your PieChart
  template: '<b></b>',
  props: {
    type: 'string'
  },

  bindings: {
    'type': 'b'
  },
  initialize: function(type){
    this.type = type;
  }
});

var view1 = new OneView('view1');
var view2 = new OneView('view2');

module.exports = View.extend({
  template: '<div><div id="view1"></div><div id="view2"></div></div>',
  autoRender: true,

  render: function(){
    this.renderWithTemplate(this);
    this.renderSubview(view1, document.getElementById('view1'));
    this.renderSubview(view2, document.getElementById('view2'));
    return this;
  }

});

顺便说一句,您应该在render函数中实例化视图。否则,每次调用render()时它们都是相同的(因为CommonJS模块的工作方式),而且很可能不是您想要的结果。此外,要查询视图中的元素,可以使用this.querySelector('SELECTOR')而不是document.getElementById

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34754151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档