SessionStorage в магистрали не работает до обновления страницы
Я сейчас работаю над магистральным приложением, и у меня проблема со значениями sessionStorage, я думаю. Если вы думаете, что что-то не так, просто скажите мне!
Когда я запускаю этот скрипт:
<script>
console.log((sessionStorage.appRole == "1" || sessionStorage.appRole == "2"));
</script>
Тогда результат в консоли верен.
Но когда значение используется для шаблона в моей магистрали с использованием подчеркивания, значение внутри оператора IF не отображается. Но когда я обновляю свою страницу, кнопка видна. Интересно, почему это не работает при первом посещении страницы. Значение верное, но оно не отображается.
<% if (sessionStorage.appRole == "1" || sessionStorage.appRole == "2") { %>
<button id="create" class="btn btn-primary"><%= i18n.create_user %></button>
<% } %>
Есть ли у вас какие-либо идеи? Я часами чесал голову и теперь прошу вашей помощи!
1 ответ
Вы должны получить значения и сохранить их в переменной, а затем передать их в шаблон. Так как шаблон ищет значение в этой переменной, он терпит неудачу.
var appRole = sessionStorage.appRole;
var user = i18n.create_user;
Передайте appRole, пользовательские значения в шаблон
$(this.el).html(this.myTemplate({"appRole": appRole,"userDetail":user }));
Внутри шаблона получи как
<% if (appRole == "1" || appRole == "2") { %>
<button id="create" class="btn btn-primary"><%= userDetail %></button>
<% } %>
Для myTemplate включите ваш шаблон в поле зрения и назначьте его с помощью функции шаблона подчеркивания.
myTemplate : _template(sampleTemplate),
И используйте this.myTemplate(mymodelobj.toJSON()); где когда-либо вам нужно.
Посмотрите на пример файла просмотра
define([
'jquery',
'underscore',
'backbone',
// Using the Require.js text! plugin, we are loaded raw text
// which will be used as our views primary template
'text!templates/project/list.html'
], function($, _, Backbone, projectListTemplate){
var ProjectListView = Backbone.View.extend({
el: $('#container'),
render: function(){
// Using Underscore we can compile our template with data
var data = {};//json data
var compiledTemplate = _.template( projectListTemplate, data );
// Append our compiled template to this Views "el"
this.$el.append( compiledTemplate );
}
});
// Наш модуль теперь возвращает наше представление return ProjectListView; });