微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rivets js 从 0.5.13 升级到 0.9.4 打破了现有的绑定输入

如何解决Rivets js 从 0.5.13 升级到 0.9.4 打破了现有的绑定输入

我使用的是带有主干 js 的铆钉 js 0.5.13 版本,我想将其更新为铆钉 0.9.4,但在更新版本后预先绑定输入和其他未显示数据的 html 元素。下拉列表和复选框也会发生同样的情况。我有很大的模板,所以不能在这里写,只发布模板的一小部分。

我有骨干模型绑定到这样的铆钉

@rv = rivets.bind @$el,{ model: @model }

@model 是主干模型 和模板是这样的

<div class="ui form">
<input type="text" maxlength="30" data-rv-input="model.button_label" />
</div>

和铆钉配置是这样的

rivets.binders.input =
  publishes: true
  routine: rivets.binders.value.routine
  bind: (el) ->
    $(el).bind('input.rivets',this.publish)
  unbind: (el) ->
    $(el).unbind('input.rivets')

rivets.binders['toggle-class'] = (el,value) ->
  if value
    el.classList = $(el).attr("data-base-classes") + " " + value

rivets.binders['style-*'] = (el,value) ->
  el.style.setProperty(this.args[0],value)

rivets.binders['attr-*'] = (el,value) ->
  el.setAttribute(this.args[0],value)

rivets.configure
  prefix: "rv",adapter:
    subscribe: (obj,keypath,callback) ->
      callback.wrapped = (m,v) -> callback(v)
      if obj instanceof Backbone.Collection
        obj.on('add remove reset sort change',() ->  
          callback(obj[keypath]) 
        )
      # for collection iteration like data-rv-each="model.controls" when control is a collection
      # THis is used in row control for interating child controls
      else if obj[keypath] instanceof Backbone.Collection
        obj[keypath].on('add remove reset sort change',() ->  
          callback(obj.get(keypath).models) 
        )
      else 
        obj.on('change:' + keypath,callback.wrapped)

    unsubscribe: (obj,callback) ->
      if obj instanceof Backbone.Collection
        obj.off('add remove reset sort change',() ->  
          callback(obj[keypath]) 
        )
      else if obj[keypath] instanceof Backbone.Collection
        obj[keypath].off('add remove reset sort change',() ->  
          callback(obj.get(keypath).models) 
        )
      else
        obj.off('change:' + keypath,callback.wrapped)

    read: (obj,keypath) ->
      if obj instanceof Backbone.Collection
        obj[keypath]
      else
        if keypath is "cid" then return obj.cid
        obj.get(keypath)

    publish: (obj,value) ->
      if obj instanceof Backbone.Collection
        obj[keypath] = value
      else
        if obj.cid
          obj.set(keypath,value);
        else
          obj[keypath] = value

  templateDelimiters: ['{{','}}']

它在 5.13 上运行良好,但在新版本中它不起作用.. 任何帮助都将受到高度评价..

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。