【问题标题】:knockout js custom bindings淘汰赛js自定义绑定
【发布时间】:2016-10-21 09:57:38
【问题描述】:

我正在使用 Knockout js 自定义绑定在 div 中绑定一些新的 div 元素,使用类并且我正在从数据库中获取数据,它仅适用于单个数据,如果数据不止一个,它会再次绑定在同一个 div 中,就像我下面的代码一样,

 //for single data it working 
<div data-bind="foreach:items">
  <ul data-role="listview">
  <li>
     <div databind="BindingImage({img:imageurl})" class="Image">
        <div id="img1"><img src=1.png /></div>
     </div>
  </li>
  </ul>
</div>

//for multiple data it not  working 
<div data-bind="foreach:items">
  <ul data-role="listview">
  <li>
    <div databind="BindingImage({img:imageurl})"class="Image">
        <div class="imageWrapper" id="img1"><img src=1.png /></div>
        <div clas="imageWrapper" id="img2"><img src=2.png /></div>
   </div>
        for multiple data its create databind="BindingImage div, but inside the div it does not bind anything, i need to bind image2 in this div but its getting bind on first  div itself,i need to bind first image inside the first BindingImage div and next  one in another BindingImage div where i am doing wrong. 
   <div databind="BindingImage({img:imageurl})"class="Image"></div>
  </li>
  </ul>
</div>


//custom binding//
ko.bindingHandlers.BindingImage = { 
    update: function(element, valueAccessor) {
        id+=1
        var className = element.className;
        imagewrapper= document.createElement('div');
        imagewrapper.className = "imageWrapper";
        imagewrapper.id = "img1"+id
        document.querySelector("." +className).appendChild(imagewrapper)
    }
};

【问题讨论】:

  • 你的Html很乱,很多结尾标签都不见了。
  • databind="BindingImage({img:imageurl})" 可以,但绝对不是淘汰绑定语法。与你所说的相反,我很确定这段代码根本不起作用。

标签: javascript jquery knockout.js knockout-2.0


【解决方案1】:

有两个主要问题:

  • 首先,id=+1。这将始终返回1。这与 i= parseInt(1) 相同。应该是id+=1
  • 第二个document.querySelector("." +className).appendChild(imagewrapper),这将始终附加到第一个容器。将其替换为element.append()document.querySelectorAll("." +className)[id-1].appendChild(imagewrapper),考虑到id 将以1 开头。

您还缺少ul 的结束标签

【讨论】:

  • @thnaks,我试过了,但它的眼睛是在这个标签内创建的"
    ",它没有创建新图像 div
  • 请参考以下链接Custom Bindings - KnockoutJS了解如何使用custom bindingsBindingImage({img:imageurl}) 语法无效
猜你喜欢
相关资源
最近更新 更多
热门标签