avalon2组件ms-for改变数组时不生效
1、问题:在使用avalon2.1.6写一个下拉选择组件,发现改变下拉数据源数组后ms-for不生效。
2、
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<div ms-controller="test">
<ms-selector ms-widget="@config"></ms-selector>
</div>
</body>
<script src="//cdn.bootcss.com/avalon.js/2.1.6/avalon.js"></script>
<script>
var test_vm = avalon.define({
$id:'test',
config: {
dataList: [
{
id: 1,
name: '11111',
},
{
id: 2,
name: '22222',
}
]
}
});
var selector_vm = null;
avalon.component('ms-selector', {
template: '<div>\
<input type="text" \
ms-on-keypress="@keypressOn">\
<ul ms-if="@dataList.length > 0">\
<li ms-for="el in @dataList">{{el.name}}</li>\
</ul>\
</div>',
defaults: {
dataList: [],
keypressOn: function(e) {
if(e.charCode === 13){
this.dataList.push({id:7, name:'sfsfsf'})
}
},
onInit: function(){
console.log('onInit')
},
onReady: function(){
selector_vm = this;
}
},
})
</script>
</html>
3、在组件文本框中输入回车后向组件dataList数组中加入一个元素,第一次可以成功,再次操作就不会增加了,控制台看组件vm里的dataList元素已经增加,但是ms-for并没有生效渲染出来。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
重新scan()绑定渲染下试试呢
貌似avalon把‘id’属性名称当成数组元素唯一性标识了。可以将id属性名改成其他名称(比如did),或将其属性值改成不重复值测试即可通过,如下:
avalon2有个特性叫做监控数组:
用vm.array.pushArray(arr)就可以更新了