在使用数组上的observable api更新更改后,JsViews不会删除脚本标记

时间:2016-08-11 06:09:34

标签: javascript arrays observable jsviews

我最近一直在使用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这个问题。

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

谢谢。

1 个答案:

答案 0 :(得分:2)

这不是正确的行为。

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