Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 如何使用主干网.StateManager?_Backbone.js_State Machine - Fatal编程技术网

Backbone.js 如何使用主干网.StateManager?

Backbone.js 如何使用主干网.StateManager?,backbone.js,state-machine,Backbone.js,State Machine,我正在尝试探索Backbone.StateManager,但找不到太多关于此的资料。 我已经看过了,但是没有简单的例子可以使用它 我举了一个这样的例子 (function($) { var UserInputView = Backbone.View.extend({ states: { foo: { enter: function () { alert('hi');

我正在尝试探索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);

在所有这些代码中,只有初始化功能在工作。代码的其余部分不起作用。请指导

基本上,您的代码未命中状态更改和
主干.StateManager.addStateManager
的正确目标。如文件中所述,使用

StateManager提供了一种轻松添加StateManager的方法 对任何物体
StateManager.addStateManager
获取目标对象并 可选选项集,在目标上定义的任何状态下读取, 并创建一个新的StateManager。它还设置了许多方法 目标,包括
triggerState
getCurrentState
,以及对 StateManager位于
target.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');
基于您的代码的演示,以