avalon2 界面扫描完成后有没有回调函数

有些时候需要在渲染完毕后,引用其他类似JQ插件的初始化工作。这时候需要使用data-repeat-rendered的回调函数。
应用场景:
在metro-start界面下,需要给每个tile引用click-transform的效果。如果使用avalon的ms-repeat构造出来的tiles,是没有这个效果的。
解决方案:
使用data-repeat-rendered回调函数。
data-repeat-rendered: function(action, offset, length)
//this指向当前DOM元素
//action: 操作,比如'del'
&a ms-attr-href=&el.Url& target=&_blank& ms-repeat=&systems& data-repeat-rendered='subSystemsRendered'&
&div data-click=&transform& class=&tile bg-darkOrange&&
&div class=&tile-content icon&&
&i class=&icon-new-tab-2&&&/i&
&div class=&brand&&
&div class=&label&&{{el.Name}}&/div&
&/div& &!-- end tile --&
在VM定义中:
var subSystemVm = avalon.define({
$id: &subSystemVm&,
hasSubSystem: false,
firstSystem: {},
systems: [],
subSystemsRendered: function() {
$(this).find('[data-click=transform]').tileTransform();
阅读(...) 评论()avalon最佳实践 - 司徒正美 - 推酷
avalon最佳实践 - 司徒正美
最近从angular的QQ群与新浪微博拉了许多人来用我的avalon,成为第一批登上方舟,脱离DOM苦海的人。短短三个月内,5群的朋友也搞出几个切实实行的案例了。为应对粉丝们高益高涨的热情,遂放出此文章。
avalon的数据绑定需要经过扫描才能起作用,框架自身会在domReady时进行一次扫描,通过ms-include加载子模板时,也会对当前模板进行一次扫描。 如果用户的页面是自己AJAX加载回来,或自己对元素设置了ms-*绑定属性,或是自己用require等动态加载库,在它的回调里定义VM,请不要忘了执行avalon.scan() 如果能确定扫描的区域,那么最好也请传入一个元素节点,让其更快地执行.
请保持数据的扁平化,不要设计包含多级子对象的大对象,如{a:{b:{g:7}},d:{e:{f:3}}}。因此将这个对象转换为VM后,它的内部结构将更加庞大,每一级都添加大量辅助函数与同名的访问器属性,特别吃内存;另,avalon对多级对象的深层监控还不完善,第四层就力不从心了。
请保存数据的完整性,比[{v:1},{v:2},{v:3},{}]就不是一个好的数据源,因为第四个与前三个明显不同。[1,null,2,3,4]也是如此。请从JAVA数组的角度来后,每个元素的类型与结构必须保持一致,这才保证页面循环渲染或更新时不会出问题。
请确保VM只包含数据与事件回调。数据是指字符串,数字,布尔,简单结构的纯对象(如{},{a:1}),日期对象(new Date())。像正则,空值(null, undefined)就不要放进去。函数要作为事件回调才放进去,因此框架内部会对ms-on-*, ms-click, ms-mouseout等绑定进行处理,确保不会执行两次(parseExpr里面预先检测动态生成的求值问题是否有错) ,什么AJAX请求也请放在事件回调中。不相关的函数请定义在define方法外,然后在事件回调里面调用。
请严格区分定义用的vm与define方法的返回值VM。define方法的参数是一个回调函数,这个函数也有一个参数,我在众多示例中,都命名为vm(就像angular的CTRL工厂方法,里面那个对象永远命名为$scope, 不同的是 我的不是强制性的),它是用于定义数据源应该包含什么数据与回调函数。 那只是一个普通的对象。而作为返回值的VM是一个成品, 已经添加大量辅助方法与覆盖上同名的访问器属性。在回调函数里,我们想引用外面的属性, 请vm将改成VM(这个也不是强制性的)。总而言之,记住vm只是用于定义,VM用于调用就行了。
关于网速慢,{{}}插值表达式暴露出来的问题, 我们可以定义这样一个样式规则进行处理[ms-controller],[ms-important]{display:none} 为有点类于angularjs的ng-cloak指令,在扫描之前起着羞丑布的作用。对于IE6不支持属性选择器的问题,只能手动处理,或使用ms-text来代替{{}},这视你的用户群体决定了。
利用好官方自带的绑定,如ms-class, ms-data, ms-css, ms-bind, ms-include, ms-attr, ms-if, ms-visible, ms-each, ms-with, ms-duplex与$watch回调。avalon不同于angular,一上来就叫初学都搞什么新指令,这种未学爬先学走的教学方式坑人不浅。习好马步,才是练好绝世武功的唯一正途。
朝圣之旅:入门教程--〉
最后的最后,最重要的最佳实践是请围绕VM编程而不是围绕DOM, avalon严格践行操作数据即操作DOM的理念,已经能让开发人员离开DOM都能轻松进行前端开发。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
matlab图形界面及回调函数小例子
下载积分:1500
内容提示:matlab图形界面及回调函数小例子
文档格式:DOCX|
浏览次数:133|
上传日期: 07:57:52|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1500 积分
下载此文档
阅读此文档的用户还读了
matlab图形界面及回调函数小例子
官方公共微信}

我要回帖

更多关于 avalon 渲染完成 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信