2011-08-03 8 views
0

私は、Web技術を使用してデスクトップアプリケーションを構築するためにTitaniumを使用しています。私は自分のMVCとしてBackbone.jsを使うことに決めました。問題は、アプリケーションがサーバー上で実行されないことです。私はこのエラーを取得するオフラインアプリケーションのBackbone.js

 window.Student = Backbone.Model.extend({ 
     initialize: function(){ 
      this.bind("save", this.value_change); 
     }, 
     value_change: function(){ 
      alert("Student model saved for : " + this.attributes.first_name); 
     }, 

     urlRoot : http://localhost:8080/student/, 
    }); 

    window.Students = Backbone.Collection.extend({ 
     model: Student, 
     url: 'http://localhost:8080/students/', 
    }); 

var students = new Students 
students.fetch() 

を使用して、サーバーから値を取得してみてください:

message: "'undefined' is not an object (evaluating '$.ajax')" 

私はこれが関係していると仮定していますこれは私のバックボーンモデルとコレクションですurl部分と一緒に。サーバーから値をフェッチできません。何か案は?

答えて

0

おかげで状態を保存するために使用backbone.localStorage永続化メカニズムに

を上書きしています。バックボーンの後にjqueryをロードする際に問題が発生しました。私は最初にjqueryをロードし、うまくいきました。 #documentcloudのircのparshapに感謝します。

0

collection.fetch()は、resetイベントを収集し、saveイベントでは発生しません。 Saveは、サーバーにインスタンスモデルを永続化する場合に、サーバーへのPOST要求を実行するModelメソッドです。あなたが代わりにこれを試してみてください

window.Student = Backbone.Model.extend({ 
}); 


window.Students = Backbone.Collection.extend({ 
    model: Student, 
    url: 'http://localhost:8080/students/', 

    initialize: function(){ 
     this.bind("reset", this.value_change); 
    }, 
    value_change: function(){ 
     alert("Students fetched "); 
    }, 
}); 

var students = new Students(); 
students.fetch(); 

を、私はあなたが

The problem is the application runs not on a server

を言うときあなたは何を意味するかわからないんだけど、しかし、あなたのJavaScriptがお使いのサーバーと同じドメイン上で実行されていない場合あなたはいくつかのクロスドメインのjavascriptの問題を抱えている可能性があります... Ruby on Railsを使用している例を掲載しています:http://www.tsheffler.com/blog/?p=428

2

問題はバックボーンでサーバにモデルを保存することです。それはあなたのサーバーにajax要求を送ることによってこれを行います。何がやりたいことは、データベースにではなく、その後のlocalStorageにすべてのあなたの答えのための