在 Backbone Stickit 中结合使用 visible 和 onGet
Posted
技术标签:
【中文标题】在 Backbone Stickit 中结合使用 visible 和 onGet【英文标题】:Using visible in combination with onGet in Backbone Stickit 【发布时间】:2013-02-20 08:50:29 【问题描述】:我有一个包含数据列表的视图,我使用主干stickit 进行模型绑定。
如果数据不可用我不想显示列表元素,但如果数据可用我需要格式化它,因此我尝试了以下绑定:
'.emailItem':
observe: 'emailAddress',
visible: function(viewVal, modelVal) return !!modelVal; ,
onGet: function (val)
return '<span>E-mail</span><strong><a href="mailto:' + val + '">' + val + '</a></strong>';
,
updateMethod: 'html'
,
.emailItem 匹配元素<li class="emailItem"></li>
。
当我运行它时,列表元素正确显示,但 onGet 的结果没有插入到视图中。我如何在stickit中使用visible
属性与客户格式的组合?
【问题讨论】:
你确定onGet
回调被执行了吗?假设您对列表中的每个项目都有一个视图,那么代码看起来是正确的(因此类绑定与 li
元素匹配)。
我没有每个列表项的视图,但这不应该是必要的,因为元素与选择器.emailItem
和模型属性emailAddress
绑定? onGet 执行一次,因为函数的输出作为 viewVal 参数发送到可见函数,我猜。
啊——因为li
元素,我以为它在电子邮件项目列表中。您是否尝试过使用id
属性和#emailItem
作为绑定选择器?
不是,但这不重要吗?我已验证选择器匹配正确的单个元素。
我不知道这很重要。我只是想简化它(因为他们的所有示例都使用基于 ID 的选择器)。
【参考方案1】:
您使用的是什么版本的 Stickit?
我问是因为我认为这个问题可能会在 master 上解决。您可以尝试以下方法吗:
stickit master
如果它不起作用,请在 github 上打开一个问题 - 我在那里非常活跃,并将深入了解。
create new issue
【讨论】:
谢谢,我明天去看看,然后回复你:) 升级到master修复了!再次感谢。【参考方案2】:我找到了解决办法:
'.emailItem':
observe: 'emailAddress',
visible: true,
visibleFn: function ($el, isVisible, modelAttr)
var value = this.model.get(modelAttr);
$el.html('<span>Email</span><strong><a href="mailto:' + value + '">' + value + '</a></strong>');
这很好用,但这不是应该使用 visibleFn 的方式。如果有更好的方法,请告诉我。
【讨论】:
以上是关于在 Backbone Stickit 中结合使用 visible 和 onGet的主要内容,如果未能解决你的问题,请参考以下文章
模型未在表单提交时更新,使用 Backbone + Stickit
与 require.js 和 backbone.stickit 一起使用时出现奇怪的 Backbone.Validation 错误