我正在为我的 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
因为我可以看到空元素项,只是渲染模板存在问题。
我template: JST['users/index']
在我的 UsersIndex 视图中引用,一切正常。出于某种原因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>