Ember API 笔记-Ember

Ember Namespace

Emberjs API:http://emberjs.com/api/
定义于:packages/ember-metal/lib/core.js:8
所属模块:ember-metal

说明:所有Ember方法与函数都定义在这个命名空间里。Ember可以用Em缩写代替。Ember-Runtime是一个提供Ember核心功能的框架,包括跨平台功能、属性观察、对象等。可配合其他跨平台js库一起使用,如jQuery。
核心框架Runtime基于jQuery API,并做了一些性能优化。

继承的方法
-无
自有的方法

-$

说明:jQuery的别名。
-A(arr)

参数:
@arr--类数组

返回:Ember.NativeArray

说明:从一个类数组对象创建一个本地的Ember.NativeArray。不会修改原始对象。

-addListener(obj, eventName, targetOrMethod, method)

参数:
@obj--对象
@eventName--字符串。事件名
@targetOrMethod--目标对象或函数
@method--函数或字符串。要在目标对象上调用的函数或函数名

说明:添加一个事件监听器。

-alias(methodName)

参数:
@methodName--字符串。方法或属性的名字

返回:Ember.Descriptor

说明:使一个属性或方法可以通过额外的名字访问。

App.PaintSample = Ember.Object.extend({
  color: 'red',
  colour: Ember.alias('color'),
  name: function(){
    return "Zed";
  },
  moniker: Ember.alias("name")
});
var paintSample = App.PaintSample.create()
paintSample.get('colour'); //=> 'red'
paintSample.moniker(); //=> 'Zed'
-assert(desc, test)

参数:
@desc--字符串。用于断言失败时抛出异常的描述
@test--布尔值。一个用于断言的表达式,为真时跳过断言。如果是假,将抛出异常

说明:定义一个断言,当条件不匹配时(test结果是false),抛出异常,异常信息为desc。使用用于生产环境的版本时,Ember构建工具将屏蔽该方法。

// Test for truthiness
Ember.assert('Must pass a valid object', obj);
// Fail unconditionally
Ember.assert('This code path should never be run')
-beforeObserver(func, propertyNames)

参数:
@func--函数
@propertyNames--字符串

返回:func

说明:无相关信息,Ember中的源代码如下

Ember.beforeObserver = function(func) {
  var paths = a_slice.call(arguments, 1);
  func.__ember_observesBefore__ = paths;
  return func;
};
-bind(obj, to, from)

参数:
@obj--根对象
@to--字符串。与obj相关的目标路径
@from--字符串。来源路径,与obj相关的路径或全局路径

返回:Ember.Bingding实例

说明:创建新绑定的全局方法。传递根对象与目标和来源路径来创建和连接绑定。

Ember中的源码如下

Ember.bind = function(obj, to, from) {
  return new Ember.Binding(to, from).connect(obj);
};
-cacheFor(obj, key)

参数:
@obj--待检查的对象
@key--字符串。要返回缓存值的属性名

返回:缓存的属性值,如果有

说明:如果存在,返回属性的缓存值。对于查看计算属性会有用。

-canInvoke(obj, methodName)

参数:
@obj--待检查的对象
@method--待检查的方法名

返回:布尔值

说明:检查method是否存在obj上。

-compare(v, w)

参数:
@v--第一个比较对象
@w--第二个比较对象

返回:如果vw,返回1

说明:比较两个javascript值。如果类型不同,比较的顺序是基于Ember.ORDER_DEFINITION计算的。

Ember.compare('hello', 'hello'); // 0
Ember.compare('abc', 'dfg'); // -1
Ember.compare(2, 1); // 1
-computed(func)

参数:
@func--计算属性的计算函数

返回:Ember.ComputedProperty实例

说明:这个辅助函数返回一个新的属性描述符,包装传入的计算属性函数。您可以使用这个辅助函数或通过Ember.defineProperty()来定义混合属性。

传递的函数将被用来获取和设置属性值。该函数接受两个参数,键和值。如果值是未定义的,你应该先设定值。在任一情况下,返回属性的当前值。

-computed.bool(dependentKey)

参数:
@dependentKey--字符串

说明:暂无

-computed.empty(dependentKey)

参数:
@dependentKey--字符串

说明:暂无

-computed.not(dependentKey)

参数:
@dependentKey--字符串

说明:暂无

-copy(object, deep)

参数:
@object--被克隆的对象
@deep--布尔值。true表示使用深度拷贝

返回:克隆的新对象

说明:创建传递参数对象的一个拷贝。此功能可以拷贝任何类型的对象,包括原始值(实际上并没有克隆,因为它们是不可变的)。

如果传递的参数对象本身有clone()(必须是继承自Ember.Copyable)方法,则执行该方法并返回结果。

-create()

说明:相当于Object.create(),如果本身不可实现。

-deprecate(message, test)

参数:
@message--字符串
@test--布尔值

说明:显示警告,包含提供的message和堆栈信息。使用用于生产环境的版本时,Ember构建工具将屏蔽该方法。

-deprecateFunc(message, func)

参数:
@message--字符串
@func--函数

说明:当包装函数被调用时,显示警告,包含提供的message和堆栈信息。

-destroy(obj)

参数:
@obj--待销毁的对象

说明:删除对象元信息,该对象将被回收。多次调用不会产生副作用。

-empty(obj)

参数:
@obj--待检测的对象

返回:布尔值

说明:验证参数是否null或一个空的string、array。

Ember.empty(); => true
Ember.empty(null); => true
Ember.empty(undefined); => true
Ember.empty(''); => true
Ember.empty([]); => true
Ember.empty('tobias fünke'); => false
Ember.empty([0,1,2]); => false
Ember.empty({});     => false
-get(obj, keyName)

参数:
@obj--待检索的对象
keyName--检索的属性名

返回:属性值或null

说明:获取对象上的属性。如果时计算属性,计算函数将被调用。如果属性未定义,执行unknownProperty()方法。

在IE8或以前的浏览器,你应该使用该方法来检索对象属性。

如果对象为null,该方法返回undefined。

-immediateObserver(func, propertyNames)

参数:
@func--函数
@propertyName--字符串

返回:func

-inspect(obj)

参数:
@obj--待审查的对象

返回:字符串。被审查对象的描述

说明:审查对象的便捷方法。该方法将尝试转换对象为有用的描述语。

Ember.inspect( Ember.Object.create({
  firstName: 'Hansi',
  lastName: 'Hinterseer',
  age: 58
})); 
//"{firstName: Hansi , lastName: Hinterseer , age: 58}"
-isArray(obj)

参数:
@obj--待检测的对象

返回:布尔值

说明:如果传递的参数是数组或类数组,返回true。

Ember中判断Array的规则:

对象拥有一个objectAt属性
对象是本地数组
对象是一个Obejct,且有一个length属性

不像Ember.typeOf,即使传递的参数不是正规数组,只要是类数组(比如Ember.Array实现的数组),这个方法就会返回true。

Ember.isArray(); // false
Ember.isArray([]); // true
Ember.isArray( Ember.ArrayProxy.create({ content: [] }) ); // true
-isEqual(a, b)

参数:
@a--第一个比较对象
@b--第二个比较对象

返回:布尔值

说明:比较两个对象,如果他们逻辑上相等,返回true。相比===全等比较符,该方法采用深度比较。它会比较内部的对象。如果两个比较对象中,任意一个含有isEuqal()的对象,直接调用该方法并返回结果,不进行比较。对于数组不进行比较,因为对数组进行比较耗费的资源太大,即使数组相同,也返回false。

Ember.isEqual('hello', 'hello'); => true
Ember.isEqual(1, 2); => false
Ember.isEqual([4,2], [4,2]); => false
-K

返回:this

说明:简单的返回自身。某些情况下会有用。在模板中使用{{action}}并分配一个Ember.K方法给它,可以避免开发过程中,指定的目标对象不能处理动作时抛出异常的麻烦。

Ember.View.create({
  templateName: 'menu',
  home: Ember.K,
  profile: Ember.K,
  links: Ember.K
});
  • Home
  • Profile
  • Links
-keys(obj)

参数:
@obj--对象

返回:对象键组成的数组

说明:返回所有对象或哈希表上定义的键。调试时审查对象会有用。

var obj = Ember.Object.create({
  firstName: 'Hansi',
  lastName: 'Hinterseer',
  age: 58
})
Ember.keys(obj);    //["firstName", "lastName", "age"]
-makeArray(obj)

参数:
@obj--要转换为数组的对象

返回:数组

说明:将传递的参数转换成数组,但不改变原对象。如果参数对象以及是数组,则返回该对象。否则将添加该参数对象到一个数组。如果参数是null或undefined,返回空数组。

Ember.makeArray(); => []
Ember.makeArray(null); => []
Ember.makeArray(undefined); => []
Ember.makeArray('lindsay'); => ['lindsay']
Ember.makeArray([1,2,42]); => [1,2,42]
var controller = Ember.ArrayProxy.create({ content: [] });
Ember.makeArray(controller) === controller; => true
-mixin(obj, mixins)

参数:
@obj--对象
@mixins--混合类

返回:obj

-none(obj)

参数:
@obj--待检测的对象

返回:布尔值

说明:如果传递的参数是null或undefined,返回true。当使用==时会在JSLint测试中出现错误,可以用该方法代替来避免。

Ember.none(); => true
Ember.none(null); => true
Ember.none(undefined); => true
Ember.none(''); => false
Ember.none([]); => false
Ember.none(function(){}); => false
-observer(func, propertyNames)

参数:
@func--函数。属性更改时调用
@propertyNames--字符串。要观察的属性名

返回:func

说明:添加属性观察者。

var obj = Ember.Object.create({
  num:'1',
  change:Em.observer(function(){
  console.log('num change to '+this.num);
  },'num')
});
obj.set('num','2'); => num change to 2
-onLoad(name, callback)

参数:
@name--挂钩名称
@callback--回调函数

-oneWay(obj, to, from)

参数:
@obj--根对象
@to--字符串。与obj相关的目标路径
@from--字符串。来源路径,与obj相关的路径或全局路径

返回:Ember.Binding实例

说明:创建单向绑定的全局方法。

Ember中的源码如下

Ember.oneWay = function(obj, to, from) {
  return new Ember.Binding(to, from).oneWay().connect(obj);
};
-propertyDidChange(obj, keyName)

参数:
@obj--属性已经更改的对象
@keyName--已经更改的属性名(或路径)

说明:当属性更改后调用。它会通知任何观察者并清除缓存。

一般不需要直接去调用该方法,但如果因为某些原因不能直接监控某个属性,你可以手动调用,在属性值更改之前需调用Ember.propertyWillChange()。

-propertyWillChange(obj, keyName)

参数:
@obj--属性即将更改的对象
@keyName--即将更改的属性名(或路径)

说明:当属性更改前调用。它会通知任何观察者并准备缓存。

一般不需要直接去调用该方法,但如果因为某些原因不能直接监控某个属性,你可以手动调用,在属性值更改之后需调用Ember.propertyDidChange()。

-removeListener(obj, eventName, targetOrMethod, method)

参数:
@obj--调用方法的对象
@eventName--事件名
@targetOrMethod--目标对象或方法
@method--方法或方法名

说明:移除一个事件监听者。参数必须与传递给Ember.addListener的参数相匹配。

-renderBuffer(tagName)

参数:
@targetName--字符串

返回:Ember.RenderBuffer

说明:用传递的tagName创建新的renderBuffer。可以覆盖此方法来进一步定制,一般不需要调用或覆写。

-required()

返回:REQUIRED

说明:Denotes a required property for a mixin

-runLoadHooks(name, object)

参数:
@name--挂钩名
@object--传递给回调函数的对象

-sendEvent(obj, eventName, params)

参数:
@obj--对象
@eventName--事件名
@params--数组

返回:true

-set(obj, keyName, value)

参数:
@obj--要修改的对象
@keyName--要修改的属性名
@value--要设置的值

返回:对象。传递的值

说明:在对象上设置属性值。对于为定义的属性,调用unknownProperty()。

在IE8或以前的浏览器,你应该使用该方法来设置对象属性。

-tryInvoke(obj, methodName, args)

参数:
@obj--检查的对象
@methodName--字符串。检查的方法名
@args--数组。传递给methodName的参数

返回:methodName返回的值或undefined

说明:检查obj是否存在methodName方法,如果有,调用它,并传递args作为参数。

-trySet(obj, keyName, value)

参数:
@obj--要修改的对象
@keyName--要设置的属性
@value--要设置的值

说明:Ember.set的容错形式。主要用于同步绑定时尝试更新一个销毁的对象。

-typeOf(item)

参数:
@item--待检测的对象

返回:字符串。对象的类型

说明:返回参数对象的类型。使用此方法代替内建的typeof方法来获取对象的类型。它在所有浏览器都返回同样结果,并且包含更多细节。

Return Value Meaning
'string' String primitive
'number' Number primitive
'boolean' Boolean primitive
'null' Null value
'undefined' Undefined value
'function' A function
'array' An instance of Array
'class' A Ember class (created using Ember.Object.extend())
'instance' A Ember object instance
'error' An instance of the Error object
'object' A JavaScript object not inheriting from Ember.Object

示例

Ember.typeOf(); => 'undefined'
Ember.typeOf(null); => 'null'
Ember.typeOf(undefined); => 'undefined'
Ember.typeOf('michael'); => 'string'
Ember.typeOf(101); => 'number'
Ember.typeOf(true); => 'boolean'
Ember.typeOf(Ember.makeArray); => 'function'
Ember.typeOf([1,2,90]); => 'array'
Ember.typeOf(Ember.Object.extend()); => 'class'
Ember.typeOf(Ember.Object.create()); => 'instance'
Ember.typeOf(new Error('teamocil')); => 'error'
// "normal" JavaScript object
Ember.typeOf({a: 'b'}); => 'object'
-warn(message, test)

参数:
@message--字符串。警告信息内容
@test--布尔值。可选。如果为假,警告信息将显示

说明:显示警告信息message。使用用于生产环境的版本时,Ember构建工具将屏蔽该方法。

Ember.warn('Ah, we have a problem!', Ember.isEqual([1,2],[1,2]))
=> WARNING: Ah, we have a problem!

继承的属性
-无
自有的属性

-ENV

说明:标准环境变量。在加载Ember之前,定义全局ENV变量来控制各种配置设置。属性值为哈希表。

-EXTEND_PROTOTYPES

默认值:true

说明:用于决定是否增强javascript内建原型来提供更友好的API。如果开启,一些方法将添加到包装对象Function、String、Array上,Object.prototype不会得到增强,以避免麻烦。

在一般情况下我们建议保留此选项设置为true,因为它很少与其他代码冲突。如果您需要将其关闭,你可以定义ENV.EXTEND_PROTOTYPES配置来禁用它。

-LOG_BINDINGS

默认值:false

说明:开启时,将在控制台输出所有触发绑定更改的信息。在产品代码中应禁用。可以在控制台临时开启。

Ember.LOG_BINDINGS = true;
App = Ember.Application.create();
App.controller = Ember.Object.create({
  name: 'Nellie'
});
App.boundController = Ember.Object.create({
  nameBinding: 'App.controller.name'
});
App.boundController.set('name', 'Tobias');
> Begin: Flush Sync Queue 
> Ember.Binding(App.controller.name -> name) <- Tobias {name: "Tobias", nameBinding: f}
> End: Flush Sync Queue
-LOG_STACKTRACE_ON_DEPRECATION

默认值:true

说明:决定当出现警告信息时是否在控制台输出完整的堆栈信息。

-SHIM_ES5

默认值:Ember.EXTEND_PROTOTYPES

说明:决定是否为旧浏览器添加ECMAScript 5 shims[shims主要目的是解决HTML5元素在旧IE下的样式问题]

-STRINGS

说明:属性值为哈希表。定义当前语言本地化字符串哈希表。通过Ember.String.loc()使用。参阅loc()。

-TEMPLATES

说明:全局共享模板哈希表。你可以将Handlebars模板存放在独立文件,在生成时构建工具会自动将模板加载到JavaScript。

-VERSION

默认值:'1.0.0-pre.2'

说明:版本号,常量。

-parentView

默认值:null

说明:如果视图当前已插入到DOM中的一个父视图,这个属性将指向该父视图。

事件

-onerror(error)

参数:
@error--错误事件对象

说明:分配一个函数给Ember.onerror,当Ember内部遇到错误时执行该函数。

你可能感兴趣的:(Ember API 笔记-Ember)