Я новичок в магистрали и попытаюсь выяснить, как передать атрибут модели поверх моего приложения с одной страницей. Я использую магистраль с 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.
Есть идеи? спасибо
У нас есть две знакомые вещи с точки зрения браузера.
Вы можете использовать любое из перечисленных выше значений для хранения значения USR_APIKey.
В противном случае вы должны вызвать LoginView() каждый раз, когда вам понадобится значение USR_APIKey, что не является хорошей практикой (с точки зрения производительности). А также, чтобы избавиться от представлений зомби, мы закрываем каждую точку зрения, когда область пользовательского интерфейса завершена.
Надеюсь это поможет
Я думаю, что лучший способ сохранить ваш ключ api в некоторых местах (сеанс или другой), потому что, если вы хотите получить это значение, вам нужно каждый раз создавать вход в систему и получать этот атрибут таким образом, например:
this.loginView = new LoginView();
this.loginView.model.get('APIKey');