Skip to content
Hex edited this page Feb 9, 2014 · 7 revisions

什么是组件管理器?

组件管理器就是所有组件的指挥中心,所有组件都必须接受组件管理器的调控。

组件管理器提供的方法

组件管理器提供的方法通过名为 TF.Core.ComponentMgr 的名字空间访问,例如:TF.Core.ComponentMgr.add();

function add(options[, defaultOptions])

在组件容器中声明组件。只有声明过的组件才可以使用。

参数

options:组件参数。多个则使用数组方式传参。如果传递字符串而不是对象,则代表组件名,其他参数在 defaultOptions 中。
options.name:组件名,字符串类型,无默认值。
options.lazyInit:是否延迟初始化组件,Boolean 类型,默认值 false。
options.lazyRender:是否延迟渲染组件,Boolean 类型,默认值 false。
options.appendRender:是否追加渲染组件,Boolean 类型,默认值 false。追加渲染组件的意思是:把组件追加放到容器 DOM 元素中,而不是替换容器 DOM 元素的内容。
options.renderTo:组件的容器 DOM 元素,可以传递 DOM 实例或者 CSS 选择器,默认值为#component选择器字符串。
options.applyTo:直接把某个 DOM 元素变成组件视图,可以传递 DOM 实例或者 CSS 选择器,无默认值。
options.contentEl:从某个 DOM 元素取得组件的视图内容,可以传递 DOM 实例或者 CSS 选择器,无默认值。
options.hide:是否以隐藏方式渲染组件,Boolean 类型,默认值 false。
defaultOptions:组件默认参数,这个参数用于在 options 传递字符串类型的时候所使用的参数。

返回值

TF.Core.ComponentMgr 名字空间,所以可以链式调用。

例子

TF.Core.ComponentMgr.add([{
    name: 'HelloWorld',
    appendRender: false,
    lazyRender: false,
    hide: false,
    renderTo: '#sub-container'
},
'MyTestComponent',
'YourTestComponent'
], {
    appendRender: true,
    lazyRender: true,
    hide: true,
    renderTo: '#main-container'
});

function post(name, message[, args])

投递消息给指定的组件。

参数

name:组件名。字符串类型。
message:消息名。字符串类型。
args:消息参数。对象类型。为空则表示不传递任何参数。

返回值

function subscribe(name, message, callback[, scope])

订阅某个组件的消息,当这个组件收到指定消息的时候调用回调函数。

参数

name:组件名。字符串类型。
message:消息名。字符串类型。
callback:回调函数。
scopecallback函数this所指对象。默认为callback本身。

返回值

subscription 句柄。这个句柄可以用来退订消息。

function unsubscribe(handle)

退订某个组件的消息。

参数

handle:subscription 句柄。

返回值

function getAgent(name)

获取一个组件的代理对象,这样就可以方便的以对象的方式与组件交互,也就是可以调用组件的 Action 方法。

参数

name:组件名。字符串类型。

返回值

组件代理对象。