EasyJS 教程二 类加载管理

在EasyJS中,可以通过类的名字动态加载一个class,教程一中已经说明了命名的规则,这片文章主要介绍JsLibrary的用法以及如何配合使用继承机制。


在JsLibrary中,提供一下几个函数来完成对象类的管理

import (improtList, callback, onError) 

申请加载一个或多个新的js类,类的命名和存放路径根据教程一的规则。callback为加载成功后的回调函数,onError为加载失败后的回调函数

例如:


JsLibrary.import(["com.fern.controller.LoginController", "com.fern.service.LoginService"], function() {
    var ctl = JsLibrary.createClass("com.fern.controller.LoginController");
    var service = JsLibrary.createClass(""com.fern.controller.LoginService");
    service.login("user1", "password", function() {});
  }, function(error) {
    //show error
  });



classForName(className)

根据class的名字,返回对应的类,比如

var controller = classForName("com.fern.controller.LoginController")

那么将返回com.fern.controller.LoginController的constructor,如果对于的类不存在,将返回null


register (className, clazz)

注册一个新类的类别

一般用法如下:

var newClass = function() {
.......................
}

JsLibrary.register("com.fern.service.UserService", newClass);



只有经过注册后的类,系统才能有效的识别。

createClass(className, arg1, arg2...)

因为JS毕竟不是一个完全的OOP语言,实现的方法是通过hack来变通实现的,因为我不建议使用 new Class()的方式来创建一个新的类,尤其是当一个类需要有构造参数的时候,必须通过变通的方法来实现,并且调用 JsLibrary.createClass来创建


变通的方法如下:


在你的class里面定义 _init方法,并加入参数。比如:

(function() {
  var composit = function() {
    var self = arguments[0] || this;
    var _super = ExtendClass(this, JsLibrary.classForName(Const.BaseComponent), self);

    var controller;
    var view;

    this.getController = function() {
      return controller;
    }

    this.showError = function(code, result) {
      controller.showError(code);
    }

    this.showIndicator = function(message) {
      controller.showIndicator(message);
    }

    this.hideIndicator = function() {
      controller.hideIndicator();
    }

    this._init = function(ctrl, v) {
      controller = ctrl;
      view = v;
    }
  };

  JsLibrary.import([Const.BaseComponent], function() {
    JsLibrary.register(Const.BaseComposit, composit);
  });

})();



需要创建实例的时候,通过JsLibrary.createClass来实现

比如:

compositeTrading = JsLibrary.createClass(Const.TradeListComposit, self, self.getComponent("trading-list"));
compositeDeposit = JsLibrary.createClass(Const.DepositListComposit, self, self.getComponent("deposit-list"));
compositePayment = JsLibrary.createClass(Const.PaymentListComposit, self, self.getComponent("payment-list"));




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值