骨干中的SessionStorage在刷新页面之前不起作用

时间:2014-05-09 11:07:27

标签: javascript backbone.js session-storage

我现在正在开发骨干应用程序,我认为我遇到了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 个答案:

答案 0 :(得分: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 );
   }
});

//我们的模块现在返回我们的视图   返回ProjectListView; });