Ember.js 应用程序 register()方法
Ember.js 是一个使用组件服务模式的JavaScript Web框架。它是开源的。Ember.js应用程序类提供了一个 registered 功能,将对象绑定到应用程序级别的依赖关系。然后用户可以在其他部分使用这些依赖关系,绑定由Ember处理。
语法:
application.register('factory:name',object,options)
属性: register函数有三个属性,用于定义其执行过程:
- factory:name: factory属性指定要使用的工厂框架,并且name属性指定工厂的名称。
- object: 它指定要绑定到给定‘factory:name’的对象。
- options: 这些是可选属性,通常具有单例和非单例类型。单例对象将被实例化一次,并且每次查找它时都返回相同的实例。非单例类型每次返回对象的新实例。
创建一个Ember应用程序: 现在我们需要创建一个Ember应用程序。进入您想保存应用程序的目录,并运行以下命令:
ember create my-app
示例1: 首先我们将使用单例类型对象,如果不指定选项,则会使用单例对象。
现在运行以下命令:
ember generate instance logger
现在将以下代码添加到文件logger.js中:首先,我们导入“Emberobject”,我们将使用它扩展我们自定义声明的对象logger的功能。接下来是initialize函数,它描述了在初始化此对象期间要执行的步骤。我们有application.register()函数,它用于注册对象。第三部分是设置默认属性,如名称和initialize函数。
import EmberObject from '@ember/object';
export function initialize(application) {
let Logger = EmberObject.extend({
log(m) {
console.log(m);
},
});
application.register('logger:main', Logger);
}
export default {
name: 'logger',
initialize: initialize,
};
运行以下命令:
ember generate instance-initializer instancelogger
将以下代码复制到 instancelogger.js 文件中:在这里定义了当实例化时这个实例初始化器将执行的操作,lookup 方法用于获取对上面声明的初始化器日志记录器的引用并使用它。使用了两个不同的日志记录器对象来比较同一引用是否相同或不同。
export function initialize(applicationInstance) {
let logger = applicationInstance.lookup('logger:main');
logger.log('This is log from Instance Logger1!');
let logger2 = applicationInstance.lookup('logger:main');
logger2.log('This is log from Instance Logger2!');
// To check returned instance is equal or not
logger.log(logger ==logger2);
}
export default {
initialize
};
运行以下命令:
ember server
输出: 前往localhost:4200并检查浏览器控制台日志。正如您所注意到的,日志中的输出将返回”true”,这意味着logger和logger2都是相同实例的对象。
示例2: 现在我们将使我们的注册表成为非单例。为此,我们将在注册函数的选项属性中添加{singleton : false}。因此,使用以下代码更新logger.js:首先导入我们将用于扩展自定义声明对象logger功能的‘Emberobject’。接下来是initialize函数,它描述了在初始化此对象期间执行的步骤。我们有application.register()函数,它注册了我们将singleton属性设置为false的对象。第三部分也是最后一部分是设置默认属性,如名称和initialize函数。
import EmberObject from '@ember/object';
export function initialize(application) {
let Logger = EmberObject.extend({
log(m) {
console.log(m);
},
});
application.register('logger:main', Logger,{singleton:false});
}
export default {
name: 'logger',
initialize: initialize,
};
instancelogger.js文件保持不变。
输出: 进入localhost:4200并刷新页面或重新加载。