cl0*_*k3r 1 javascript rest slim coffeescript backbone.js
这是我的注销点击事件:
logoutClicked: (event) ->
event.preventDefault()
console.log 'userPanel.logoutClicked -> event', event
console.info App.session
App.session.destroy
wait: true
success: (model, res) ->
console.log 'session.destroy.success -> model/res', model, res
error: (model, res) ->
console.log 'session.destroy.error -> model/res', model, res
Run Code Online (Sandbox Code Playgroud)
这是我的会话模型:
class App.Model.Session extends Backbone.Model
initialize: ->
console.log 'Session.init'
urlRoot: '/session'
Run Code Online (Sandbox Code Playgroud)
这是我纤细的后端路线:
$app->delete('/session', function () {
session_unset();
exit(true);
});
Run Code Online (Sandbox Code Playgroud)
当我触发logoutClicked事件时,一切正常,但我无法通过我的firebug看到任何服务器通信(没有DELETE或GET到/ session ...).
Firebug输出:
userPanel.logoutClicked -> event Object { originalEvent=Event click, type="click", timeStamp=18807379, altri elementi...}
Session { cid="c1", attributes={...}, _changing=false, altri elementi...}
session.destroy.success -> model/res Session { cid="c1", attributes={...}, _changing=false, altri elementi...} null
Run Code Online (Sandbox Code Playgroud)
因为你可以看到没有DELETE请求被激活...我从我的session.destroy成功回调中收到一个null res ...我是Backbone的新手,有什么建议吗?也许我必须设置Backbone.sync?
如果在新模型上调用Model.destroy(...)(Model.isNew()=== true)..destroy(...)不会做任何事情.
参考:
"强制"销毁的一种方法是手动将模型的ID设置为非NULL,如...
App.Session.set('id', '_session_id_');
Run Code Online (Sandbox Code Playgroud)
但是,当您检索App.Session时,其ID应已设置为会话ID.在这种情况下,从服务器检索会话时,您可能希望手动执行此步骤.
边注
如果你想打电话给你的ID作为属性sessionID,而不是仅仅的ID,你也可以覆盖默认idAttribute的Backbone.Model.
App.Session.Model
idAttribute: 'sessionId'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1845 次 |
| 最近记录: |