使用数组上的可观察 api 更新更改后,JsViews 未删除脚本标签

JsViews not removing the script tags after updating change with observable api on array

我最近一直在使用 JsViews。但是我对 $.observable(array).refresh()

有疑问

假设我有一个对象数组

countries = [
  {country : 'India'}, 
  {country : 'USA'},
  {country : 'Africa'}
]

当我使用模板遍历数组中的每个元素时,它会根据我的要求呈现内容,但是当我查看 HTML 结构时,它显示如下。

<html>
  <body>
    <script type="jsv#1"></script>
    <div class="country">India</div>
    <script type="jsv/1"></script>
    <script type="jsv#2"></script>
    <div class="country">USA</div>
    <script type="jsv/2"></script>
    <script type="jsv#3"></script>
    <div class="country">Africa</div>
    <script type="jsv/3"></script>
  </body>
<html>

但是当我在数组中获取一个新元素并将其推到顶部时。我有以下数组。

countries = [
  {country : 'Canada'},
  {country : 'India'}, 
  {country : 'USA'},
  {country : 'Africa'}
]

然后我申请

$.observable(countries).refresh(countries);

我在 html 结构上得到的是:

<html>
  <body>
    <script type="jsv#1"></script>
    <script type="jsv/1"></script>
    <script type="jsv#2"></script>
    <script type="jsv/2"></script>
    <script type="jsv#3"></script>
    <script type="jsv/3"></script>
    <script type="jsv#4"></script>
    <div class="country">Canada</div>
    <script type="jsv/4"></script>
    <script type="jsv#5"></script>
    <div class="country">India</div>
    <script type="jsv/5"></script>
    <script type="jsv#6"></script>
    <div class="country">USA</div>
    <script type="jsv/6"></script>
    <script type="jsv#7"></script>
    <div class="country">Africa</div>
    <script type="jsv/7"></script>
  </body>
<html>

此处标签 'jsv#1'、'jsv#2'、'jsv#3' 及其各自的结束标签未被删除。

我在 2012 年发布的 JsViews V1.0 中发现了这个问题。

这是正确的行为还是我应该采用不同的插入元素的方法。

谢谢。

这不是正确的行为。

V1.0还没发布,不知道你用的是什么版本

能不能换个最新版本再试试:http://www.jsviews.com/#download.

您不应该将国家/地区设置到新数组,然后在新数组上调用 refresh()。相反你应该这样做:

var countries = [
  {country : 'India'}, 
  {country : 'USA'},
  {country : 'Africa'}
];

tmpl.link("#result", countries);

$.observable(countries).refresh([
  {country : 'Canada'},
  {country : 'India'}, 
  {country : 'USA'},
  {country : 'Africa'}
]);

http://www.jsviews.com/#refresh

但是为了插入更好用insert()。参见 http://www.jsviews.com/#insert