2013-11-09 75 views
0

我是一個新的主幹,並試圖找出如何在我的單頁應用程序上傳遞模型屬性。 我正在使用jquery,requirejs和下劃線的骨幹。在不同視圖中使用模型屬性值

我的代碼看起來像 型號:

define([ 
    'jquery', 
    'underscore', 
    'backbone' 
], function ($, _, Backbone) { 

    'use strict'; 

    var sessionCall = Backbone.Model.extend({ 

     url: "http://myserver/sessionCall", 

     defaults: { 
      APIKey: 'NULL' 
     }, 

     initialize: function() { 

      $.ajaxPrefilter(function(options, originalOptions, jqXHR) { 
       options.crossDomain ={ 
        crossDomain: true 
       }; 
       options.xhrFields = { 
        withCredentials: false 
       }; 
      }); 
      return this; 
     } 
    }); 

    return sessionCall; 
    }); 

登錄查看:

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'router', 
    'models/mSessionCall', 
    'text!tpl/login.html' 
], function ($, _, Backbone, AppRouter model, tpl) { 

    // var loginView = Backbone.View.extend({ //if used //return loginView; below 

    return Backbone.View.extend({ 

     events: { 
      "click #clb_login":   "callLoginCheck", 
      "click #clb_newAccount": "callNewAccount" 
     }, 

     initialize: function() { 

     }, 

     el: $('#container'), 
     render: function() { 

      var template = _.template(tpl); 
      this.$el.html(template()); 
     }, 

     callLoginCheck: function (e) { 
      e.preventDefault(); //Don't let this button submit the form 

      var loginCheck = new model(); 
      //Save working version 
      loginCheck.save({ 
       success: function (loginCheck, data) { 
        loginCheck.set({USR_APIKey: data[0]['USR_APIKey']}); 
        appRouter.navigate('home', true); 
       }, 
       error: function(loginCheck, response) { 
        console.log('error'); 
        appRouter.navigate('', true); 
       } 
      }); 
     }, 

     callNewAccount: function() { 
      appRouter.navigate('newAccount', true); 
     } 
    }); 
}); 

首頁視圖:

首先是工作完美。但是,如何在不同視圖中使用我的USR_APIKey,因爲我需要此密鑰才能在REST服務器上更新/獲取/刪除我的日期。

任何想法? thx

回答

0

我認爲最好的方法是在某些地方(會話或其他)保存你的api密鑰,因爲如果你想獲得這個值,你必須每次創建一個登錄vieew並以這種方式得到這個屬性例如:

this.loginView = new LoginView(); 
this.loginView.model.get('APIKey'); 
0

從瀏覽器的角度來看,我們有兩件熟悉的事情。

  • 的sessionStorage
  • localStorage的

您可以使用上述任何存儲USR_APIKey的價值。

否則,每次需要USR_APIKey值時都必須調用LoginView(),這不是一個好的做法(就性能而言)。並且爲了擺脫殭屍視圖,我們在UI範圍結束時關閉每個視圖。

希望這會有幫助

相關問題