簡體   English   中英

Rivets.js rv-show 不適用於 rv-each

[英]Rivets.js rv-show not working with rv-each

我是 Rivets.js 的新手。 鑒於此代碼:

<div id="main">

  <div>
    <button rv-on-click="toggle">
      Toggle
    </button>
  </div>

  <div>
    Dynamic headers sould be visible: {showDynamicHeaders}
  </div>

  <table>
    <thead>
      <tr>
        <th>Fixed header</th>
        <th>Fixed header</th>
        <th rv-show="showDynamicHeaders" rv-each-item="items">
          {item.name}
        </th>
      </tr>
    </thead>
  </table>

</div>
var rvcontext = {};
var rview = rivets.bind($("#main"), rvcontext);  

rvcontext.showDynamicHeaders = true;

rvcontext.items = [
  {
    name : "Dynamic header 1"
  },{
    name : "Dynamic header 2"
  },{
    name : "Dynamic header 3"
  }
];

rvcontext.toggle = function(){
  rvcontext.showDynamicHeaders = !rvcontext.showDynamicHeaders;
}

我希望表的動態標題是否顯示取決於showDynamicHeaders的值。 但它似乎不起作用; 相反,標題是否可見取決於showDynamicHeaders初始值,但是當值更新時它們的可見性不會改變。

看到這個小提琴的一個活生生的例子。

我做錯了什么?

嘗試將rv-show移動到<table>標簽,如下所示:

<table rv-show="showTable" >
    <tbody>
      <tr rv-each-item="items">
        <td>{item.name}</td>
      </tr>
    <tbody>
  </table>

工作小提琴

編輯:另一種選擇是在 each 中添加一個 rv-class 標簽,如下所示:

 <div rv-each-i="data" rv-class-hide="i.a | neq 1">
    {i.a} - {i.b} ({i.c})
 </div>

javascript:

var data = [
    {a:1, b:"testing1", c:true},
    {a:1, b:"testing1a", c:true},
    {a:1, b:"testing1b", c:true},
    {a:2, b:"testing2", c:false},
    {a:2, b:"testing2a", c:true},
    {a:50, b:"testing50", c:false}
];

rivets.formatters.neq = function(val, v2) { return val!=v2;};

$(document).ready(function() {
    var $r = $('#rivets');
  rivets.bind($r, {data:data});
});

rv-class 方法的工作小提琴

盡管與您的問題無關,但我在搜索 rv-show 在數組循環中不起作用時發現了這個問題 - 結果 rv-show 綁定需要傳遞給它的布爾值或整數值。 “0”或“1”總是評估為真,所以在我的情況下,我只是將數據轉換為一個整數,它按預期工作。

只是補充說,以防其他人因與我相同的原因而偶然發現這個問題,尤其是在處理 AJAX 數據時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM