2014-10-05 63 views
0

我嘗試了JavaScript中的類也使用extend.js來創建它們。我在課上遇到了一些麻煩,我不太確定我是否需要它們,但我認爲這將是有用的。這是一個只獲取一些數據庫表數據的類。如何通過函數爲類提供選項列表?

var TableData = Class.extend(function(){ 
    this.rowId; 
    this.action; 
    this.returnWhat; 
    this.tableType; 
    this.php; 

    this.query = function(){ 
     if (this.returnWhat) this.action += '_' + this.returnWhat; 
     var postData = { func : this.action }; 
     if (this.rowId) $.extend(postData, { rowId : this.rowId }); 
     $.post(this.php, postData, function(data){ 
     if(data){this.data = data;} 
     }); 
    return this.data; 
    }; 

}); 

我只說我知道的表,所以我只是並將其作爲增值經銷商/選項,但我不知道如何設置類正確瓦爾起來。這例如不起作用,但可能證明我正在嘗試做什麼。

var options = { 
    rowId : '*', 
    action : 'get', 
    returnWhat : 'all' 
} 

var league = function (options){ 
    this.tableType = 'league'; 
    this.rowId  = options.rowId; 
    this.action  = options.action; 
    this.returnWhat = options.returnWhat; 
    this.php   = 'php/' + options.tableType + '.php'; 
} 

var tableData = new TableData(assoc_league); 
+0

嗯,這是一個瘋狂的方式來實現簡單的東西。加var聯盟,你可能會更好地設置this.php使用this.tableType,否則在你的例子中,它將是undefined – Christian 2014-10-06 00:05:48

+0

是的,我認爲是這樣。我不知道的是,如果它是因爲我使用類錯誤的概念,或者因爲我不應該使用類。 – Tester232323 2014-10-06 00:07:25

+1

也是$ .post是異步,所以返回this.data,將不會返回任何東西 – Christian 2014-10-06 00:08:16

回答

1

我一直喜歡這個想法

(function(my, $){ 
    var cfg = { 
     rowId: null, 
     action: null, 
     returnWhat: null, 
     tableType: null, 
     url: null 
    }; 

    my.init = function(options) { 
     if (options != undefined) { 
      for (var k in options) { 
       if (!options.hasOwnProperty(k)) continue; 
       cfg[k] = options[k]; 
      } 
     } 
     return this; 
    }; 

    my.fetchData = function(data, callback) { 
     $.post(cfg.url, data, function(resp) { 
      callback(resp); 
     }); 
    } 
})(window.myapp, window.jQuery); 

//--------------- 
myapp.init({ 
    url: '/blah/blah' 
}) 
.fetchData({animal1: 'monkey', animal2: 'zebra'}, function(data){ 

}); 
+0

即時通訊不知道是否它返回這個或返回$ ...測試,看看:) – Christian 2014-10-06 00:19:35

+1

我只是實現了我的代碼樓...現在會改正。不能有jQuery和myapp作爲$ :) – Christian 2014-10-06 00:21:21

+0

我不記得我爲什麼選擇這個作爲答案 - 我得到我的是undefined – Tester232323 2014-10-28 23:02:38