Backbone.js视图不插入模板

时间:2012-06-05 17:59:11

标签: ruby-on-rails backbone.js backbone-views backbone-routing

我正在为我的Backbone / rails应用程序创建用户视图。我正在尝试添加新视图:

/views/users/edit.js.coffee

class MosaikBackbone.Views.UsersEdit extends Backbone.View

  template: JST['users/edit']

  render: ->
    $(@el).html(@template())
    this 

模板位于/templates/users/edit.jst.eco

<h1>edit page</h1>

我的路由器在/routers/users.js.coffee中看起来像这样:

class MosaikBackbone.Routers.Users extends Backbone.Router
    routes:
        '': 'index'
        'users/:id': 'show'
        'users/edit/:id': 'update'

    initialize: ->
        @collection = new MosaikBackbone.Collections.Users()
        @collection.fetch()

    index: ->
        view = new MosaikBackbone.Views.UsersIndex(collection: @collection)
        $('#container').html(view.render().el)

    show: (id) ->
        alert "Entry #{id}"

    update: (id) ->
        editView = new MosaikBackbone.Views.UsersEdit()
        $('#container').html(editView.render().el)

索引视图/模板工作正常,视图正在插入容器div中。如果我将UsersEdit视图的tagName更改为'li',我可以在DOM中看到li元素,它只是没有填充模板。我猜这是一个语法问题,但控制台中没有错误。

更新:为了澄清,视图被附加到#container,因为我可以看到空元素项,渲染模板只是一个问题。

我在UsersIndex视图中引用template: JST['users/index'],一切正常。由于某些原因,即使两个模板位于同一文件夹中,template: JST['users/edit']也无法正常工作。此外,我可以在编辑模板中放置无效语法,并且不会抛出任何错误,因此甚至没有被检测到我不认为

更新2:以下视图/模板可以正常运行:

class MosaikBackbone.Views.UsersIndex extends Backbone.View

  template: JST['users/index']

  initialize: ->
    @collection.on('reset', @render, this)
    @collection.on('add', @appendUser, this)

  render: ->
    $(@el).html(@template())
    @collection.each(@appendUser)
    this

  appendUser: (user) ->
    view = new MosaikBackbone.Views.User(model: user)
    $('#users').append(view.render().el)

模板/用户/ index.jst.eco

h1>title here</h1>
<ul id="users"></ul>

0 个答案:

没有答案