1

アンダースコア テンプレートdateで使用されるバックボーン モデルに属性があります。値は123456432 のような整数形式です。
date

PHP の場合と同様に、この整数値をdd / mm / yyyy形式でアンダースコア テンプレートに表示したいと考えています。

ここに私のアンダースコアテンプレートがあります

<script type="text/template" id="item-template">    
    <span class="label label-info"><%- name %> <em> <%= date %> </em>  </span>
</script>
4

2 に答える 2

11

アンダースコア テンプレートを使用すると、関数を呼び出してテキストを任意の方法で出力できますprint。たとえば、タイムスタンプを日付に変換するには、次のようなものを使用できます

<script type="text/template" id="tpl-1">    
    <span class="label label-info"><% print(new Date(date*1000)) %></span>
</script>

タイムスタンプはPHPからのものであると想定しているため、秒単位であることに注意してください。Javascript では、タイムスタンプはミリ秒単位であると予想されるため、1000 を掛けます。

タイムスタンプが Javascript に由来する場合は、

<script type="text/template" id="tpl-1">    
    <span class="label label-info"><% print(new Date(date)) %></span>
</script>

この日付オブジェクトのフォーマットは、次のように行うことができます

<script type="text/template" id="tpl-2">    
    <span class="label label-info"><% 
        var d = new Date(date*1000), // or d = new Date(date)
            fragments = [
                d.getDate(),
                d.getMonth() + 1,
                d.getFullYear()
            ]; 
            print(fragments.join('/'));
        %></span>
</script>

または、これらすべてを関数呼び出しに因数分解します (ここでは_.template、どこにでも保存できます)。

_.template.formatdate = function (stamp) {
    var d = new Date(stamp*1000), // or d = new Date(date)
        fragments = [
            d.getDate(),
            d.getMonth() + 1,
            d.getFullYear()
        ]; 
    return fragments.join('/');
};
<script type="text/template" id="tpl-3">    
    <span class="label label-info"><%= _.template.formatdate(date) %></span>
</script>

そしてデモhttp://jsfiddle.net/Dyzm8/

于 2013-09-05T08:50:16.247 に答える
0

次の 2 つのオプションがあります。

toJSON メソッドの結果を渡すときに、別のフィールドでオブジェクトを拡張します。

var fields = this.model.toJSON();
fields.formattedDate = '29/11/1973';
this.template(fields);

もう 1 つの方法は、Backbone Marionetteを見ることです。これには、そのような場合のヘルパー メソッドがあります (そして、他の多くの反復タスクを解決します)。

Javascript での単純な PHP 日付関数ポートは、ここにあります。

于 2013-09-05T08:21:01.953 に答える