2016-05-20 12 views
0

でnonassign非アサイナブル式Iは、この図には、このうち試みることにストレスの瞬間を持っていますが、私はこのような私の見解でNGリピートを使用して、配列をループしています:取得エラー:ngModel:AngularJs

//Array from controller that i'm receiving from a server 

    $scope.data =[{Day: 'Monday', startTime: '2016-03-29T12:30:00', finishTime: '2016-03-29T16:30:00'}, 
    [{Day: 'Tuesday', startTime: '2016-03-29T12:00:00', finishTime: '2016-03-29T18:00:00'}, 
     ] 
//Then looping through like this: 

    <div ng-repeat="a in data track by $index"> 

    <input ng-model="a.day"> 
    <input ng-model="a.startTime | data: 'hh:mm'"> 
    <input ng-model="a.finishTime | data: 'hh:mm'"> 

    </div> 

上記のように、私は時間だけを表示するように日付をフィルタリングしています。パイプを通した濾過は正常に動作し、時間が表示されますが、私はこのエラーメッセージが表示されます。

Expression 'a.startTime |' is non-assignable. Element: {1}

私だけ

<input value={{a.startTime | date: 'hh:mm'}} 

が、これには、以下の私がしたい値を表示するために必要な場合場合によっては、テキストフィールドから値を取得する必要があります。なぜng-modelを使用しているのでしょうか。

このエラーのために、テキストボックスの時刻を編集することさえできません。 テキストフィールドで時間をバインドしたり、時間を置いたりする最適な解決策は何ですか? ありがとうございます

答えて

0

あなたはそのための指示が必要です。 $formattersにビュー-値をフォーマットし、$parsersにあなたは、モデルのビューの値を解析

module.directive('youDirective', function() { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function(scope, elem, attrs, controller) { 
      if (!controller) { 
       return; 
      } 

      controller.$parsers.unshift(function(value) {}); 

      controller.$formatters.unshift(function(value) {}); 
     } 
    }; 
}); 

ような何か。あなたは、次の方法でこれを行うことができ

0

1)

$scope.data =[{Day: 'Monday', startTime: new Date('2016-03-29T12:30:00'),.... 

2 Dateオブジェクトに日付を変換するには)doc here

を参照してください

<input type="date" ng-model="a.startTime"> 

入力[日付]ディレクティブを使用します