3

バックボーン ビューから jsp コードを実行しようとしています。次のようにHtmlからサーバー側のAPIを呼び出しています

index.jsp (このjspにはsample.jsが含まれています)

%@ page contentType="text/html;charset=UTF-8"
         import="foo.*,java.util.List"

%>
<%

            Foo foo = new Foo();
            List<XYZ> xyzList = foo.getList();

%>

バックボーン フレームワークを使用しています。私のjsコードは以下の通りです。

サンプル.js

SampleView = Backbone.ModalView.extend(
        {
        name: "SampleView",
        model: SomeModel,
        templateHtml : "<div ><span>Search </span>" +
                "<table border='1'>"+
                "<thead>"+
                "<tr>"+
                        "<td></td>"+
                        "<th>header1</th>"+
                        "<th>header2</th>"+
                        "<th>header3</th>"+
                "</tr>"+
                "</thead>"+
                "<tr>"+
                     "<% for(XYZ xyz: xyslist ){   %>"+
                     "<td><input type='checkbox' value='<%= xyz.getName()%>'></td>"+
                     "<td name='selected'><%= xyz.getName()%></td>"+
                     "<td></td>"+
                     "<td></td>"+
                    "<% } %>"+
                "</tr>"+
                "<tr>"+
                "<td><input type='checkbox' value='test'></td>"+
                     "<td name='selected'>test</td>"+
                     "<td></td>"+
                     "<td></td></tr>"+
                "</table><button id='select'>Select</button></div>",


                initialize: function(){
                _.bindAll( this, "render");
                                this.template = _.template( this.templateHtml);
                        },
        events: {
                "click #select": "select"
                        },
                select: function(){
                         //implementation

                },        
        render: function(){
                                $(this.el).html( this.template());
                return this;
            }
    });

問題は、jsp コードを実行しないことです。ハードコードされた「テスト」チェックボックスのみが表示され、サーバー側からリストを取得しません。ここで何か不足している場合は教えてください。ありがとう。

4

2 に答える 2

2

JSP で使用される <% および %> タグは、アンダースコア テンプレート エンジンでも使用されます。提供する変数がないのに、なぜビューでテンプレートを使用しているのですか?

コードを実行しようとすると、アンダースコア テンプレート エンジンから「予期しない識別子」が返されます。これは、<% と %> に処理する有効な JavaScript コードが含まれていないためです。

それ以外の

$(this.el).html( this.template());

このように、HTML文字列を直接挿入する必要があります

$(this.el).html(this.templateHtml);
于 2012-10-02T05:05:09.023 に答える
1

Underscore.js を使用して _.templateSettings を変更しました

たとえば、{{ your_variable }} に、これ以上 <%= yourVariable %> はありません

_.templateSettings = {
    interpolate: /\{\{(.+?)\}\}/gim,
    evaluate: /\{\{(.+?)\}\}/gim,
    escape: /\{\{\-(.+?)\}\}/gim
};

var Auto =  Backbone.Model.extend     defaults: {
        color : 'red',
        name  : 'ferrari',
        year  : 2008
    }
});

var AutoView = Backbone.View.extend({
    tagName : 'li',

    template: _.template('<strong>'
        +'{{ year }}</strong>{{ name }}'),

    initialize : function(){
        this.render();
    },

    render : function(){    
        this.$el.html( this.template( this.model.toJSON() ) );
    }
});

var auto = new Auto();
var autoView = new AutoView({model:auto});
于 2014-05-11T11:35:48.420 に答える