Использовать значение атрибута модели в разных видах

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.

Есть идеи? спасибо

Теги:
requirejs
backbone.js

2 ответа

0

У нас есть две знакомые вещи с точки зрения браузера.

  • sessionStorage
  • LocalStorage

Вы можете использовать любое из перечисленных выше значений для хранения значения USR_APIKey.

В противном случае вы должны вызвать LoginView() каждый раз, когда вам понадобится значение USR_APIKey, что не является хорошей практикой (с точки зрения производительности). А также, чтобы избавиться от представлений зомби, мы закрываем каждую точку зрения, когда область пользовательского интерфейса завершена.

Надеюсь это поможет

0

Я думаю, что лучший способ сохранить ваш ключ api в некоторых местах (сеанс или другой), потому что, если вы хотите получить это значение, вам нужно каждый раз создавать вход в систему и получать этот атрибут таким образом, например:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню