Marionette JS和Wreqr

时间:2014-07-16 22:09:41

标签: javascript backbone.js marionette

我正在研究在backbonerails.com上学习Marionette的教程。看起来视频是使用版本1编写的,但在版本2中,消息传递系统已更改并使用wreqr。

我一直在尝试使用wreqr github示例翻译代码,但不断收到错误。如果有人可以帮助我将此代码翻译成当前的木偶请求/响应系统,我真的很感激!我一直无法找到任何现有的例子。

实体文件中的当前代码:

@Demo.module "Entities", (Entities, App, Backbone, Marionette, $, _) ->

    class Entities.Header extends Backbone.Model

    class Entities.HeaderCollection extends Backbone.Collection
      model: Entities.Header

    API = 
      getHeaders: ->
        new Entities.HeaderCollection [
        { name: "Users" }
        { name: "Leads" }
        { name: "Appointments" }
      ]

    App.reqres.addHandler "header:entities", ->
      API.getHeaders()

请求实体的标头控制器中的代码:

@Demo.module "HeaderApp.List", (List, App, Backbone, Marionette, $, _) ->

  List.Controller = 

    listHeader: ->
      links = App.reqres.request "header:entities"
      console.log links
      headerView = @getHeaderView links
      App.headerRegion.show headerView

    getHeaderView: (links) ->
      new List.Headers
        collection: links

2 个答案:

答案 0 :(得分:1)

放置在实体中的

addHandle 不存在。 替换为 setHandler ,使用请求调用此事件,例如。

# entities
App.reqres.setHandler "header: entities", ->
  API.getHeaders()

# controller
links = App.reqres.request links "header: entities"

setHandler函数负责添加您的事件触发器以及回调和上下文,请查看{{3 }}

我在牵线木偶的最新版本中做了一个样本。 我正在使用Wreqr与source code from the marionette的实体API交换事件。

答案 1 :(得分:0)

好的,我不确定为什么在我按照Wreqr文档第10次尝试之后这有效,但这现在可用于设置处理程序:

App.reqres = new Backbone.Wreqr.RequestResponse

App.reqres.setHandler "header:entities", ->
  API.getHeaders()