{Template, Component} = require 'mcore'
class Time extends Component
init: ->
#渲染完成时执行
@on 'rendered', =>
#1秒后,更新time值,当渲染完成时
#会执行 rendered, 等同于,每秒
#更新一次time值
setTimeout =>
@set 'time', new Date()
, 1000
@render require('./tpl/tagTime.html'),
time: new Date(),
id: 2
#注册组件
Template.components.time = Time
模板可以只是一个变量
<!-- ./tpl/tagTime.html -->
{scope.time}
注册组件后,在其它模板中使用该TAG: time
<div class="test">
<time mc-id="scope.id"></time>
<!--render:<time id="2">Tue Feb 16 2016 16:11:58 GMT+0800 (CST)</time>-->
</div>class Time extends Component
watch: ->
#<time mc-id="scope.id"></time>
#当 id 属性更新时,执行
@on 'change:id', (value)->
console.log value当组件有自定义事件,向上级DOM对发送事件
如:
<time mc-on-change-time="chageTime"></time>
当 scope.time 更新时,需要通知调用它的模板引擎
#自定义组件
class Time extends Component
init: ->
#渲染完成时执行
@on 'rendered', =>
#1秒后,更新time值,当渲染完成时
#会执行 rendered, 等同于,每秒
#更新一次time值
setTimeout =>
time = new Date()
@set 'time', time
#触发自定义事件,并传参 time
@emitEvent 'change-time', [time]
, 1000
@render require('./tpl/tagTime.html'),
time: new Date(),
id: 2
#template
tpl = new Template()
tpl.changeTime = (time)->
console.log time
约定 如果是
click等标准事件触发的自定义事件 需将 event, el 这两个参数传回, 如
class Tabs extends Component
init: ->
@.$el = $ @el
@render require('../tpl/tag/tabs.html'),
index: 0
items: []
#当用户点击tab时,参数原路回传
changeTab: ->
@emitEvent 'change-tab', arguments
false
<ul class="tab">
<li mc-for="v, i in scope.items"
mc-class="'item ' + (i == scope.index ? 'current' : '')">
<a mc-data-ix="i"
mc-on-click="changeTab(v, i)"
class="link">{v.title}</a>
</li>
</ul>scope 同 Template 方法scope值 同 Template 方法scope值 同 Template 方法
date 2016-01-23 16:46:42, author vfasky vfasky@gmail.com, and link http://vfasky.com
组件