我最近一直在使用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这个问题。
这是正确的行为还是应该采用不同的插入元素的方法。
谢谢。
答案 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。