2015-05-14 30 views
0

我試圖從另一個javascript文件訪問數據和它寫成這樣:使用jQuery來訪問另一個JS文件

(function($) { 

    var Poller = function() { 
    this.defaults = { 
     type: 'veggies', 
     limit: 10 
    }; 

    this.items = { 
     veggies: [ 
     'Adzuki Beans', 
     'Asparagus', 
     'Black-eyed Peas', 
     'Brussels Sprouts', 
     'Carrots', 
     'Collard Greens', 
     'Parsnips', 
     'Rhubarb', 
     'Yams', 
     'Watercress' 
     ], 
     fruits: [ 
     'Apricots', 
     'Blackcurrants', 
     'Cherimoya', 
     'Dates', 
     'Elderberry', 
     'Guava', 
     'Kumquat', 
     'Miracle Fruit', 
     'Purple Mangosteen', 
     'Satsuma' 
     ] 
    }; 
    }; 

    Poller.prototype._getRandomNumber = function (min, max) { 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
    }; 

    Poller.prototype._getData = function (type) { 
    var item, i, len; 
    var list = this.items[type] || []; 
    var results = []; 

    for (i = 0, len = list.length; i < len; i++) { 
     item = list[i]; 

     results.push({ 
     name: item, 
     count: this._getRandomNumber(0, 200000) 
     }); 
    } 
    return results; 
    }; 

    Poller.prototype._processData = function (data, limit) { 
    return data.slice(0, limit); 
    }; 

    Poller.prototype.poll = function (options, cb) { 
    var self = this; 
    var config = $.extend({}, this.defaults, options); 
    var dfd = $.Deferred(); 

    setTimeout(function() { 
     var payload = self._processData(self._getData(config.type), config.limit); 

     cb && cb(payload);  
     dfd.resolve(payload); 
    }, this._getRandomNumber(400, 2000)); 

    return dfd; 
    }; 

    if (window.spredfast == null) { 
    window.spredfast = { 
     Poller: Poller 
    }; 
    } 
}(jQuery)); 

在它之前我的腳本文件,意思是嵌入HTML,

<script src="api.js"></script> 
<script src="script.js"></script> 

如何訪問我的腳本文件中的數據並以降序顯示攪拌蔬菜和水果?

感謝,

+0

你需要創建一個'Poller'實例。你現在有什麼代碼試圖訪問腳本 – BillPull

+0

嗨比爾, 我試過var obj = window.Poller; var obj = window.spreadfast.Poller; – kirdua

+0

你有權限更改文件嗎? –

回答

0

應該工作...

if (!(spredfast in window)) { 
    window.spredfast = { 
     Poller: function(){ 
     return new PollerInstance(); 
     } 
    }; 
} else { 
    window.spredfast.Poller = function(){ 
    return new PollerInstance(); 
    }; 
} 

// call 
var Poller = spredfast.Poller(); 
+0

謝謝,代碼返回,Uncaught ReferenceError:Poller沒有定義 – kirdua

+0

@kirdua哎呀,我的錯誤。你可以在自調用函數中實例化Poller,因爲Poller還不存在。更新.. –

0

運行此,訪問數據items.veggies例如。必須創建一個新的Poller實例。

(function($) { 
 

 
    var Poller = function() { 
 
    
 
    this.defaults = { 
 
     type: 'veggies', 
 
     limit: 10 
 
    }; 
 

 
    this.items = { 
 
     veggies: [ 
 
     'Adzuki Beans', 
 
     'Asparagus', 
 
     'Black-eyed Peas', 
 
     'Brussels Sprouts', 
 
     'Carrots', 
 
     'Collard Greens', 
 
     'Parsnips', 
 
     'Rhubarb', 
 
     'Yams', 
 
     'Watercress' 
 
     ], 
 
     fruits: [ 
 
     'Apricots', 
 
     'Blackcurrants', 
 
     'Cherimoya', 
 
     'Dates', 
 
     'Elderberry', 
 
     'Guava', 
 
     'Kumquat', 
 
     'Miracle Fruit', 
 
     'Purple Mangosteen', 
 
     'Satsuma' 
 
     ] 
 
    }; 
 
    }; 
 

 
    Poller.prototype._getRandomNumber = function (min, max) { 
 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
 
    }; 
 

 
    Poller.prototype._getData = function (type) { 
 
    var item, i, len; 
 
    var list = this.items[type] || []; 
 
    var results = []; 
 

 
    for (i = 0, len = list.length; i < len; i++) { 
 
     item = list[i]; 
 

 
     results.push({ 
 
     name: item, 
 
     count: this._getRandomNumber(0, 200000) 
 
     }); 
 
    } 
 
    return results; 
 
    }; 
 

 
    Poller.prototype._processData = function (data, limit) { 
 
    return data.slice(0, limit); 
 
    }; 
 

 
    Poller.prototype.poll = function (options, cb) { 
 
    var self = this; 
 
    var config = $.extend({}, this.defaults, options); 
 
    var dfd = $.Deferred(); 
 

 
    setTimeout(function() { 
 
     var payload = self._processData(self._getData(config.type), config.limit); 
 

 
     cb && cb(payload);  
 
     dfd.resolve(payload); 
 
    }, this._getRandomNumber(400, 2000)); 
 

 
    return dfd; 
 
    }; 
 

 
    if (window.spredfast == null) { 
 
    
 
    window.spredfast = { 
 
     Poller: new Poller() 
 
    }; 
 
    } 
 
}(jQuery)); 
 

 

 
var dfd = window.spredfast.Poller.poll().then(function(data) { 
 
    
 
    data.sort(function(a, b){ 
 
    return a.count < b.count; 
 
    }); 
 
    
 
    var message = ''; 
 
    for(var i = 0; i < data.length; i++){ 
 
    message += data[i].name + ': ' + data[i].count + '\n'; 
 
    } 
 
    
 
    alert(message); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

thx的信息。我如何從新腳本訪問它並觸發該功能? – kirdua

+0

取決於你要訪問什麼,但這個例子,你可以使用window.spredfast.Poller.items.veggies [0] –

+0

我試圖訪問水果和蔬菜,再加上分配給他們的隨機數,並顯示他們在降序訂購。 – kirdua