我有一个带日历页面的应用。在那个页面上,我有代表约会的元素。这是我到目前为止一直在展示约会的方式:
position: absolute
。appointment_id
并根据约会开始的当天晚些时候设置该元素的top
属性。换句话说,我在top: 0
,left: 0
将所有约会转移到彼此之上,然后我将每个约会垂直移动到正确的位置。 (这是一个多人日程表,而不是常规的挂历。)我做了类似的事情,将约会安排到专栏中,但现在这并不重要。
这是我的问题:在初始页面加载时,一切正常,因为每个约会元素都有一个与之关联的id。 当我更新约会时,当我进行重新排列时,其ID将被删除并且该约会被错过。它只是粘在左上角。
这种情况发生的原因很明显且有意义。我只是不知道该怎么办。 在Backbone中,如果我不能使用其模型的ID,我该如何引用元素?
为了使事情变得更复杂,除非我在呈现视图之后执行,否则这种重新安排都不起作用 - 换句话说,我必须在路由器中进行重新排列。这似乎是错误的,在路由器的范围内,我不再能够访问各个元素。我只能访问包含约会模型的集合,如果其元素知道自己的约会ID,我只能将每个模型与其元素匹配,更新后,它不会![/ p>
希望一切都有道理。有什么建议吗?
答案 0 :(得分:0)
表示约会的每个DOM元素应该是绑定了约会模型的单独视图。
当约会模型发生变化时,您需要做的就是重新渲染该单个视图(仅重新计算一个位置并减少DOM操作)。
AppointmentView:
AppointmentView = Backbone.View.extend
# model: Appointment
tagName: "div"
events: {}
initialize: ->
@model.on 'change:time', @render, @
render: ->
# calculate the position and append to the DOM
# you can take a look at setElement function, if needed - http://documentcloud.github.com/backbone/#View-setElement