Closed areyouse7en closed 8 years ago
不要在组件里使用$watch * ,性能会超差
因为组件VM是一个合成VM,它包含了上面VM的所有属性
噢。。 还有个问题,就这个分页,点几次下一页或者页码的时候,会出现错乱,当前页是5,5和7同时都加上了active,感觉是多次渲染了。。
司徒大大你看下,是不是ms-class或者ms-attr在component里使用的时候,渲染会出现延迟或者错误。我截个图给你看。
<li ms-for="el in @pageItems" ms-class="{'am-active' : @pager.curPage==el}">
<a href="javascript:;" ms-click="@getList(el)">{{@pager.curPage}}-{{el}}:{{@pager.curPage==el}}</a>
</li>
这个情况在不使用组件,直接for出来的时候是没有的。 真是麻烦你了,分页这个组件很重要。。我卡了很久了。。
是的,我也正在处理,应该是版本比较错误了
辛苦啦~~ 提个建议,在onViewChange事件的返回对象中,能否提供change的是哪个属性,就像$watch一样,可以得到old,new,name。 这样我就可以根据需要对某项属性的改变做相应的操作,其他的改变就不操作。
噢,不对。。这个貌似只监听view的变化,属性怎么变都是不会触发的。。
if (preHTML !== curHTML) {
cur.vmodel.$fire('onViewChange', {
type: 'viewchange',
target: dom,
wid: wid,
vmodel: vnode.vmodel
})
}
那希望可以有一个onAttrChange之类的监听~
我把之前分页的内容抽出来做了个组件,在更新页码的时候碰到了问题,最后是想通过监听pager的属性(curPage,totalPages,totalItems)然后改变pageItems。 在组件中使用 this.$watch("pager.", function(a, b, name) {}) 的时候,无效。 改成pager.totalPages这种却可以。然后在vm上使用也是可以的。
js代码如下: