在Famo.us中,如何从父视图中将事件传递给父视图

时间:2014-11-19 20:01:06

标签: famo.us

我有一个包含曲面的自定义视图。我需要将表面事件传递给父视图。我可以从视图外部轻松完成此操作,但是如何从视图中执行此操作?这是我的自定义视图,代码不起作用:

define([
    "famous/core/view",
    "famous/core/Surface",
    "famous/modifiers/StateModifier"
], function(View, Surface, StateModifier){

    function _createContainer() {
        var self = this;
        var container = new Surface({
            classes: ['blue-bg'],
            content: 'HERE IS A LOVELY BIT OF CONTENT FOR MY SURFACE'
        });
        // THIS DOESN'T WORK, BUT ILLUSTRATES WHAT I'M NEEDING TO DO:
        container.pipe(self);
        self.containerNode.add(container);
        self.form = container;
    }

    function FormView(){
        var self = this;
        View.apply(self, arguments);
        var containerMod = new StateModifier({
            size: self.options.size
        });
        self.containerNode = self.add(containerMod);
        _createContainer.call(self);
    }

    FormView.prototype = Object.create(View.prototype);
    FormView.prototype.constructor = FormView;

    FormView.DEFAULT_OPTIONS = {
        size: [300, 800]
    };

    return FormView;
});

以下是可行的示例代码,但我希望从内部视图中执行此操作:

var myView = new View();
mainContext.add(myView);

var surface = new Surface({
  size: [100, 100],
  content: 'click me',
  properties: {
    color: 'white',
    textAlign: 'center',
    backgroundColor: '#FA5C4F'
  }
});

myView.add(surface);

surface.pipe(myView);

1 个答案:

答案 0 :(得分:1)

在自定义视图FormView中,您需要管道到视图的事件处理程序。这样,当Scrollview添加到曲面时,可以看到视图的事件。

更改

container.pipe(self);

container.pipe(self._eventOutput);