4

Backbone.StateManagerを調べようとしていますが、これに関する資料があまり見つかりませんでした。ドキュメントを確認しましたが、簡単な使用例はありません。

私はこのような例を作りました

(function($) {

    var UserInputView  = Backbone.View.extend({
        states: {
            foo: {
                enter: function () {
                    alert('hi');
                    return console.log('enter bar');
                },
                exit: function () {
                    alert('hi');
                    return console.log('exit foo');
                },
                transitions: {
                    transitions: {
                        'onBeforeExitTo:anotherState': function () {
                            alert('hi');
                        },
                        'onExitTo:anotherState': function () {
                            alert('hi');
                        },
                        'onBeforeEnterFrom:anotherState': function () {
                            alert('hi');
                        },
                        'onEnterFrom:anotherState': function () {
                            alert('hi');
                        }
                    }
                }
            },
            bar: {
                enter: function () {
                    alert('hi');
                    return console.log('enter bar');
                },
                exit: function () {
                    alert('hi');
                    return console.log('exit bar');
                },

            }
        },
        initialize: function () {
            var statemanager;

            alert('intialized');
            console.log(this.states);
            statemanager = Backbone.StateManager.addStateManager(this.states);

            return statemanager;
        },
        render: function () {

            alert('render');
        }
    });
    var user = new UserInputView();

})(jQuery);

このすべてのコードでは、初期化関数のみが機能しています。残りのコードは機能していません。案内してください

4

1 に答える 1

1

基本的に、あなたのコードは状態の変化と の正しいターゲットを見逃していますBackbone.StateManager.addStateManager。ドキュメントに記載されているように、オブジェクトで Backbone.StateManagerを使用するには

StateManager は、簡単に StateManager を任意のオブジェクトに追加する方法を提供します。StateManager.addStateManagerターゲット オブジェクトとオプションのオプション セットを受け取り、ターゲットで定義された状態を読み取り、新しい StateManager を作成します。また、 、 、および の StateManager への参照を含むtriggerState、多くのメソッドをターゲットに設定します。getCurrentStatetarget.stateManager

つまり、 のターゲットはBackbone.StateManager.addStateManagerオブジェクト インスタンスである必要があり、 で状態の変更を開始できますmodel.triggerState。例えば ​​:

var UserInputView  = Backbone.View.extend({
    states: {
        // your states
    },
    initialize: function () {
        var statemanager;
        statemanager = Backbone.StateManager.addStateManager(this);
    }
});

var user = new UserInputView();
user.triggerState('foo');

いくつかの状態操作を視覚化するための、コードに基づくデモ

于 2012-12-19T11:49:28.573 に答える