使用数组上的可观察 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。
我最近一直在使用 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。