簡體   English   中英

使用節點上的主干配置$ .ajax以進行誓言測試

[英]Configuring $.ajax with backbone on node for testing with vows

(編輯以大大簡化)

在節點上,我有以下server.js文件。

var Backbone = require('backbone');

var Tweet = Backbone.Model.extend({});
var Tweets = Backbone.Collection.extend({
    model : Tweet,
    url: function () {
        return 'http://search.twitter.com/search.json?q=backbone'
}
});

var myTweets = new Tweets();
myTweets.fetch();

運行此命令時,出現錯誤消息。 “無法調用未定義的方法'ajax'”(1359:14)

基本上,這是$未定義的結果。 為什么未定義? 好了,這里有許多中間步驟,但是在加載文件時,期望“ this”在瀏覽器中是“窗口”,在服務器上是“ global”。 在節點“ this” = {}上執行。

因此,orbone.js文件中的問題“如何將'this'設置為global”?

在Backbone> = 1.x上,您可以簡單地分配Backbone.$而不是使用Backbone.setDomLibrary

骨干解決方案<0.9.9

您需要解決的第一個問題是如何在Node上運行它。 Node.js是服務器端JS環境,但不包含任何用於控制DOM的邏輯。 為此,您需要加載類似JSm的內容。

設置了DOM環境后,您可以將jQuery及其代碼加載到其中,並且它應該像瀏覽器一樣工作。

但是,要專門回答您的問題,將jQuery加載到global是一種難看的方法。 您應該使用Backbone的setDomLibrary函數將$設置為所需的值。

嘗試這樣的事情:

if (typeof exports !== 'undefined') {
    MyModels = exports;
    Backbone.setDomLibrary(require('jquery'));
    server = true;
} else {
    MyModels = this.MyModels = {};
}

但是,如果嘗試執行任何DOM功能,這將失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM