在Raphael.js中使用Ember.js:如何将Ember对象与Raphael对象相关联?

时间:2013-07-26 03:16:25

标签: javascript ember.js raphael

我正在构建的应用程序使用Ember.js和Raphael.js。由于我是Ember.js的新手,我在理解如何将两者结合在一起时遇到了一些问题。我已经看过this demo,但这只能让我参与其中。

让我以这种方式说出我的问题:

我们以"todo" demo from Ember.js's documentation为例。如何将图像与每个待办事项相关联,并在待办事项未完成时将该图像显示在Raphael绘图画布上?为了澄清,只有一个拉斐尔绘图表面显示所有图像。

就像在Ember.js演示中一样,我想使用灯具来获取我的待办事项信息,但我想添加一个图像字段:

Todos.Todo.FIXTURES = [
  {
    id: 1,
    title: 'Learn Ember.js',
    isCompleted: true,
    image: 'some.png'
  },
  {
    id: 2,
    title: '...',
    isCompleted: false,
    image: 'some_other.png'
  }
];

请耐心等待我,因为我没有太多接触过Ember.js。我需要知道

  1. 在何处以及如何初始化拉斐尔绘图表面
  2. 如何将图像添加到绘图表面
  3. 如何根据相关任务的isCompleted值切换图像的可见性。

1 个答案:

答案 0 :(得分:0)

无论您存储图像完成数据的对象是什么,都需要具有响应完成状态更改的观察器功能。在该函数中,您可以执行任何必要的操作来添加/删除raphael中的图像。 (对不起,我不知道raphael,所以无法确切地告诉你该函数包含的内容)。

每次调用观察者到Object.set('imageCompleted',true / false);

示例:

  App.RaphaelPainter = Ember.Object.extend({
    imageCompleted:null,
    paintOnRaphaelCanvas:function(){
      if(this.get('imageCompleted')){
         // erase the image from raphael
      }
      else {
         // add the image to raphael
      }
    }.observes('imageCompleted')
  });