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