我正在尝试探索 Backbone.StateManager,但在这方面找不到太多 Material 。
我已经通过 the documentation 但没有使用它的简单示例。

我做了一个这样的例子

(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);

在所有这些代码中,只有初始化函数在工作。其余代码不起作用。请指导

最佳答案

基本上,您的代码错过了状态更改和 Backbone.StateManager.addStateManager 的正确目标。如文档中所述,使用 Backbone.StateManager with objects



这意味着 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');

基于您的代码的演示,到 visualize some state manipulations

关于backbone.js - 如何使用 Backbone.StateManager?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13951256/

10-11 23:30
查看更多