1

AJAX経由でいくつかのものをロードし、剣道でレンダリングしていますが、AJAXでロードされたデータではなく、jsのvarとして設定されている何かを追加したいと考えています。

<script id="some-template" type="text/x-kendo-template">
    <div style="background-image: url('#= commonBackground #');">
        <h2>#= title #</h2>
    </div>
</script>

そして、これを呼び出します:

$('button').on('click', function(e){
    e.preventDefault();

    var commonBackground = '/images/background.png';
    var someData = {
        title: 'Lorem Ipsum'
    };
    var someTemplate = kendo.template($('some-template').html());

    $('#target').append(someTemplate(someData));
});

これがひどいコードであることはわかっていますが、ここで何をしようとしているのかを理解していることを願っています。commonBackgroundテンプレートからどのように参照すればよいかわかりません。これについて何か助けはありますか? ドキュメンテーションは私を賢くしませんでした...

4

1 に答える 1

0

変数commonBackgroundはグローバルである必要があります。

次のように定義します。

var commonBackground = '/images/background.png';
$(document).ready(function () {
    ...
});

また:

var commonBackground = undefined;
$(document).ready(function () {
    ...
    $('button').on('click', function(e){
        ...
        commonBackground = '/images/background.png';
        ...
    });
});

IMPORTANT : がcommonBackgroundそのままテンプレート データ内に定義されていないのはなぜtitleですか? 私はそれがより簡単でクリーンだと思います:

$('#button').on('click', function (e) {
    e.preventDefault();
    var someData = {
        title           : 'Lorem Ipsum',
        commonBackground: 'background.png'
    };
    var someTemplate = kendo.template($('#some-template').html());
    $('#target').append(someTemplate(someData));
});
于 2013-03-07T16:09:25.440 に答える