0

コントローラーで 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を「eventHandler」変数に設定すると、eventHandlerが更新されません。

誰かがそれを行うための解決策を持っていますか?

4

1 に答える 1

0

OK、エラーが見つかりました:

「activateDragMode()」関数をデバッグしているときに、「this.eventHandler」が未定義であり、「this」がオブジェクトではなく EventHandler であることがわかりました。

eventHandler

したがって、関数に.bind(this)を追加して、オブジェクトのコンテンツをバインドすると、すべてがうまく機能しました。

var activateDragMode = function() {
     this.eventHandler = dragEventHandler;
}.bind(this);
于 2014-10-31T08:15:29.540 に答える