7

私は angularjs の初心者です。日付プロパティを入力 (テキスト) にバインドしようとしていますが、日付をフォーマットする方法がわかりません。

私のjsonオブジェクトコントローラー:

$scope.datasource = {"prop1":"string data", "myDateProp":"\/Date(1325376000000)\/"}

私の見解:

<input type="text" ng-model="datasource.myDateProp" />

その結果、テキストボックスに「/Date(1325376000000)/」という文字列が表示されます。

この日付をどのようにフォーマットできますか?

4

1 に答える 1

3

あなたがする必要があるのは、 http://docs.angularjs.org/api/ng.filter:dateを見ることです。これは、デフォルトで angular で利用可能なフィルターです。

日付とともに追加のものを渡しているようです。シナリオはこちらをご覧ください。( /日付( *)/ ) . * のものを除いて、他のすべては日付を解析するために必要ではなく、デフォルトの角度フィルターはそれを解析できません。これらの追加要素をモデルから削除するか、独自のフィルターを記述して入力時にそれらを削除することができます。

編集 :

http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController (およびそこで定義されている例!)をご覧ください。これを複数の場所で再利用する場合は、ngModelController で説明されているメソッドで再利用することをお勧めします。新しいディレクティブを作成し、ngModel に $render と $setViewValue を実装します。

これを 1 か所だけで行いたい場合は、入力用の新しいモデルを定義することもできます。何かのようなもの

$scope.dateModel = "";

そしてそれを使う

<input type="text" ng-model="dateModel" ng-change="onDateChange()"/>

コントローラーでは、次のようなことを行う必要があります。

$scope.$watch("datasource.myDateProp",function(newValue){

    if(newValue){
        convert(newValue);
    }
});

function convert(val){
    //convert the value and assign it to $scope.dateModel;
}


$scope.onDateChange = function(){
// convert dateModel back to the original format and store in datasource.myDateProp.
}
于 2012-10-11T10:57:32.387 に答える