如何在Famo.us/Angular fa-pipe-to中动态更改eventHandler

时间:2014-10-30 15:56:18

标签: famo.us famous-angular

我试图在我的控制器中修改fa-pipe-to上的eventHandler但是修改不起作用。

在我看来,我有一个滚动视图'表面循环。

每个表面管道都有一个事件处理程序。

<fa-scroll-view     fa-pipe-from="scrollEventHandler">
    <fa-view    ng-repeat="tile in tiles">
        <fa-modifier    fa-transform="tile.transform">
            <fa-container-surface   fa-pipe-to="tile.eventHandler">
                <fa-modifier    fa-opacity="tile.opacity">
                     <fa-surface   fa-background-color="tile.color"/>
                </fa-modifier>
             </fa-container-surface>
        </fa-modifier>
    </fa-view>
</fa-scroll-view>

在我的控制器中,我有一个带有2个eventHandlers的对象:

function Object() {

    this.eventHandler = null;

    $scope.scrollEventHandler = new EventHandler();
    var dragEventHandler = new GenericSync();

    var activateDragMode = function() {
         this.eventHandler = dragEventHandler;
    }
}

默认情况下,我使用scrollEventHandler,它可以工作:

this.eventHandler = $scope.scrollEventHandler;

但在执行期间我想切换到其他eventHandler:

activateDragMode();

所以我的问题是:当我将新的eventHandler设置为&#39; eventHandler&#39;变量,eventHandler未更新。

有没有人有解决方案呢?

1 个答案:

答案 0 :(得分:0)

好的,我发现了我的错误:

当我调试'activateDragMode()'函数时,我可以看到'this.eventHandler'未定义,'this'不是我的Object而是EventHandler。

eventHandler

所以,我将 .bind(this)添加到我的函数中以绑定我的对象的内容,并且每个工作都很好:

var activateDragMode = function() {
     this.eventHandler = dragEventHandler;
}.bind(this);