1

BackBone.Model.extend implementation を持つアプリケーションに HomeRoute.js ファイルがあります。セッション json を提供するこの HomeRoute.js の render メソッドで ajax を呼び出しています。このjsonから、変数sessionIdを抽出し、このsessionId変数を別のHeaderView.jsファイルで使用したいと考えています。

これについて多くのことを調査しましたが、この変数を HeaderView.js に渡す方法が見つかりませんでした

HomeRoute.js コード

var HomeRoute = BackBone.Model.extend({
render: function() { 

 this.createSession("userId","tenantId","orgId","accountNumb"); 
},

createSession : function(userId, tenantId, orgUnit, userAccountNum) {
var self = this;
var showHtml = function(data){
           if(data.status == "valid"){
           var sessionId = data.session.sessionId;// This variable to be used in another js file
           self.displayHtml(self, sessionId);   
           }else{
                //  To be implemented Later
           }
    }
    $.ajax({
         type : 'post',
         url : "url",
         success : showHtml,
         error : function(){
        alert("An Error Occurred while creating session");
         }
    });
},

どんなリードも私にとって非常に役に立ちます。

4

2 に答える 2

0

sessionId が HomeRoute の重要な部分である場合は、それをモデルの一部として作成し、初期化子で初期化できます。

var HomeRoute = BackBone.Model.extend({
    initialize: function() { 
        this.sessionId = null;
    },
...
}

「showHtml」の下で更新します。

var showHtml = function(data){
           if(data.status == "valid"){
           self.sessionId = data.session.sessionId;// This variable to be used in another js file
           self.displayHtml(self, sessionId);   
           }else{
                //  To be implemented Later
           }
    }

sessionId にアクセスするには、ビュー ファイルでモデル オブジェクトをエクスポートする必要があります。

var _homeRoute = new HomeRoute ();
var _sid = _homeRoute.sessionId;
于 2013-10-10T16:56:44.813 に答える
0

これを行うにはかなりの数の方法があります。

HomeRoute の外 (同じファイル内) に sessionId という変数を作成するだけです (現在、HomeRoute オブジェクト内の showHtml 関数にその変数しかありません。スコープ内のはるかに高い位置に移動します)。その最上位スコープの変数は、HeaderView.js ファイルを含む、この後に含まれる他の .js ファイルで見ることができます。

例えば:

var sessionId;

var HomeRoute = BackBone.Model.extend({
render: function() { 

 this.createSession("userId","tenantId","orgId","accountNumb"); 
},

createSession : function(userId, tenantId, orgUnit, userAccountNum) {
var self = this;
var showHtml = function(data){
           if(data.status == "valid"){
           sessionId = data.session.sessionId;// This variable to be used in another js file
           self.displayHtml(self, sessionId);   
           }else{
                //  To be implemented Later
           }
    }
    $.ajax({
         type : 'post',
         url : "url",
         success : showHtml,
         error : function(){
        alert("An Error Occurred while creating session");
         }
    });
},

次に、別のファイル (HomeRoute.js の後に含まれる HeaderView.js) で、その変数に簡単にアクセスできます。

alert(sessionId);

...もちろん、事後操作が既に返されていると仮定します。(また、JS のオブジェクトのスコープ外で変数を変更できると仮定しますが、これについては肯定的ではありません。そうでない場合は、インスタンス化された HomeRoute オブジェクトから値を返して、それを sessionId に割り当てる必要があります。 .)

于 2013-10-10T16:46:28.510 に答える