【问题标题】:Wait for multiple models to load in an Ember View等待多个模型加载到 Ember 视图中
【发布时间】:2013-06-07 07:48:07
【问题描述】:

我有一个使用画布元素的 Ember 应用程序。我正在使用以下模型:

一个工具包有很多位置有很多组件有很多功能

为第一个套件加载模型数据的地图路线对象:

App.MapRoute = Ember.Route.extend({

  model : function() {
    return App.Kit.find(1);
  },

  setupController: function(controller, model){
    this._super(controller, model);
  }
});

以及这条路线中的画布元素视图

<script type="text/x-handlebars"  data-template-name="application">
  {{outlet}}
</script>

<script type="text/x-handlebars"  data-template-name="map">
  {{view App.CanvasView }}
</script>

画布视图:

App.CanvasView = Ember.View.extend({
  tagName: 'canvas',
  width: 600,
  height: 600,

  didInsertElement: function(){
   var el = this.$();

   // Pseudo Code
   // When all kit, Position, Component and Feature Data is loaded
   // Pass Data to createFabricCanvas
   // this.createFabricCanvas(el, data);

  },

  createFabricCanvas: function(el, data){
    fabCanvas = new fabCanvas(el, data);
  }
});

我的问题是如何确保每个 hasMany 模型的所有数据在传递到 fabCanvas 之前都已加载。 FabCanvas 库是预先编写的,并假定所有数据在处理之前都是可用的。

我想解决方案可能涉及使用 .on('didLoad') 检查每个模型是否存在。

谢谢。

【问题讨论】:

    标签: canvas ember.js


    【解决方案1】:

    您可能会尝试检查并观察父模型数组上的isLoaded 属性,如这些答案herehere 中建议的那样。虽然我不确定这是否能保证所有has many 子关系或您的模型也被加载。但你可以试一试。我会尝试自己为这个用例设置一些测试,如果我发现了什么,我会更新答案。

    【讨论】:

      【解决方案2】:

      这对我有用。就我而言,我的主要模型是App.Month,它是hasMany App.Company 模型。在我看来这是一种方法:

      dataChanged: function() {
          if (this.get('controller.model.companies.isLoaded')) {
              Ember.run.once(this, 'someFunction');
          }
      }.observes('controller.model.companies.isLoaded'),
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多