问题是render()
方法没有被调用。
您必须在控制器实例化后明确调用它。
无论如何,我认为你不应该在构造函数中做任何渲染。 更好的选择是:
- 具有模型(MVC架构),其从服务器加载的数据之后触发特定事件 ,
- 控制器应该定义事件处理程序的事件,可以将渲染视图。
编辑 只是很简单的代码片段怎么可能(CoffeeScript中,使用jQuery):
的Task
模型类:
class Task extends Spine.Model
@configure 'Task', 'name', 'deadline'
@fetch() ->
Task.deleteAll()
# ... load data from the server ...
Task.create name: 'foo', deadline: '2012-11-22' # create local instance(s)
Task.trigger 'data-loaded'
return
控制器:
class Tasks extends Spine.Controller
constructor: ->
super
init:() ->
@routes
'list': (params) ->
Task.fetch()
return
Task.bind 'data-loaded',() =>
@render()
return
return
render:() ->
@el.render Task.all()
return
初始化代码(另一个可能性lity可能是Spine.js控制器堆栈):
tasksCtrl = new Tasks el: $('.task-list')
tasksCtrl.navigate 'list'
注意,这还需要route.js
(包含在Spine.js)和我用Transparency模板引擎(这是@el.render()
甲基)。然后模板如下:
<div class="task-list">
<div class="task">
<span data-bind="name"></span>
<span data-bind="deadline"></span>
</div>
</div>
这很有道理,你会介意留下一个非常简单的代码片段,说明如何实现? – Darcbar
用示例代码编辑的帖子。需要一些模板引擎来配合Spine.js;如上所述,我使用了透明度。 – zbynour
这真是太棒了,只要把它放到与我需要相关的环境中,已经让脊柱看起来更清晰了,谢谢:) – Darcbar