在Javascript原型中为用户创建函数/事件

时间:2015-06-03 07:27:19

标签: javascript jquery

我的项目中有一个Protoype如下:

var data = {
    labels: ["January", "February", "March", "April", "May", "June", "July", "August"],
    datasets: [
        {
            data: [65, 59, 80, 81, 56, 55, 40, -30]
        }
    ]
};

var options = {
    scaleBeginAtZero: false
};

var ctx = document.getElementById("myChart").getContext("2d");
var myBarChart = new Chart(ctx).Bar(data, options);

这将启动一个与观察者挂钩的页面,并以定义的间隔从ajax服务获取数据。

我需要的是在this.isInitialized变为true时将事件放在用户可以放置函数的位置。

目前我正在使用它。

(function($) {

    $.fn.observerPages = function(pageNo) {
      return new ObserverPage($(this), pageNo);
    };

    function ObserverPage(Parent, pageNo) {
      try {
        this.parent = Parent;
        this.isInitialized = false;
        this.timer = -1;
        this.highChart = [];
      } catch (e) {

      }
    }
    ObserverPage.prototype = {
      initialize: function(url) {
        isInitialized = true;
      },
      update: function(controllerurl) {
        if (isInitialized == true) {
            //Update
          }
        },
        startTimer: function(url, interval) {},
        stopTimer: function() {}
      };
    })(jQuery);

我想要一个当isInitialized为true时用户可以处理的事件,并且可以像这样使用

var page = $("liveDiv").observerPages(2);
page.initialize("http://localhost:5549/GetLatestNews");
page.update("http://localhost:5549/GetLatestNewsData");

我该怎么做?

1 个答案:

答案 0 :(得分:0)

解决方案可能与此类似:

var event = new Event('pageinit');
ObserverPage.prototype = {
  initialize: function(url) {
    isInitialized = true;
  },
  update: function(controllerurl) {
    if (isInitialized == true) {
      document.dispatchEvent(event);
    }
  },
  startTimer: function(url, interval) {},
  stopTimer: function() {},
  onInitialize: function(callback)
  {
    document.addEventListener('pageinit', callback, false);
  }
};

编辑:this->文档