5

AngularJS を使用して ASP.NET サーバー アプリケーションからデータを取得し、クライアント側に表示しています。これが私が得ているものです:

ProjectID │ CreatedOn
══════════╪══════════════════════
13241     │ /Date(1338364250000)/   
13411     │ /Date(1338370907000)/   

ご覧のとおり、日付が正しく表示されていません。日付を のようにフォーマットしたいYYYY-MM-DD HH:MM:SS。これどうやってするの?


HTML ビュー:

<div ng-app ng-controller="FirstCtrl">
    <table>
        <thead>
            <tr>
                <td>
                    ProjectID
                </td>
                <td>
                    CreatedOn
                </td>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="team in teams" class="thumbnail">
                <td>
                    {{team.ProjectID}}
                </td>
                <td>
                    {{team.CreatedOn}}
                </td>
            </tr>
        </tbody>
    </table>
</div>

アクションメソッド:

public JsonResult GetUser()
{
   return Json(new { data = ProjectService.GetPrefixUsedCount(1).ToArray() });
}

JSON の結果が返されました。

{"data":[{"ProjectID":13241,"CreatedOn":"\/Date(1338364250000)\/"},
{"ProjectID":13411,"CreatedOn":"\/Date(1338370907000)\/"}]
4

4 に答える 4

16

クイックフィックス

MVC でフォーマットを変更できない場合は、次のようにすることができます。

{{ team.CreatedOn.slice(6, -2) | date: 'yyyy-MM-dd HH:mm:ss' }}

重要な点は.slice(6, -2)、余分なジャンクをすべて取り除き、エポック時間だけを残すことです。


フィルターが必要ですか?

これを頻繁に使用する場合は、カスタム フィルターを使用することをお勧めします。これは既存のdateフィルタをラップします:

.filter('mvcDate', ['$filter', $filter =>
  (date, format, timezone) =>
    date && $filter('date')(date.slice(6, -2), format, timezone)
]);

dateフィルターをカスタム フィルターに置き換えるだけです。

{{ team.CreatedOn | mvcDate: 'yyyy-MM-dd HH:mm:ss' }}

JSFiddle の実際の例を次に示します。

于 2014-08-14T16:41:53.130 に答える
4

次のようにカスタム フィルターを作成します。

app.filter("dateFilter", function () {
    return function (item) {
        if (item != null) {
            return new Date(parseInt(item.substr(6)));
        }
        return "";
    };
});

その後、HTML にフィルターを適用できます。

<tr ng-repeat="team in teams" class="thumbnail">
<td>{{team.CreatedOn | dateFilter | date:"dd-MM-yyyy"}}</td>

それが役に立てば幸い。

于 2015-07-23T17:34:09.950 に答える
1

ASP.NET MVC ドメイン モデルには、angular が期待する形式をレンダリングする追加のプロパティがあります。

 public string CreatedOnJson
         {
             get
             {
                 return JsonConvert.SerializeObject(CreatedOn, new JavaScriptDateTimeConverter()).Replace("new Date(","").Replace(")","");

             }
         }

そうすれば、角度のある日付フィルターを使用して、好みの方法で表示できます。

 {{team.CreatedOn | date:'yyyy-MM' }}
于 2013-05-13T08:38:28.107 に答える