2017-11-06 10 views
1

私はこれに対する答えを探していましたが、どこにも見つかりませんでした。テーブルの選択を変更

私は今、私が何をしようとしています何を選択すると、日付入力だから、

<table id="tblCorrAction" class="table table-bordered table-striped table-hover table-condensed"> 
    <thead> 
     <tr style="height: 30px; background-color: #aeccea; color: #555; border: solid 1px #aeccea;"> 
      <th style="width:18%;">RArea</th> 
      <th style="width:37%;">P</th> 
      <th style="width:20%;">C</th> 
      <th style="width:25%;">CAction</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr ng-repeat="ca in CASelectList"> 
      <td>{{ca.QT}}</td> 
      <td>{{ca.CAPT}}</td> 
      <td> 
       <select name="caC_{{ca.QuesID}}" ng-model="item" class="form-control" 
        ng-selected="ca.Corrected" ng-required="true" 
        ng-change="GetCorrectedCAData(ca, item)" 
        ng-options="corr as corr.caText for corr in correctedOption"> 
        <option value="">--Select--</option> 
       </select>            
      </td> 
      <td> 
       <span> 
        <input name="caDate_{{ca.QuesID}}" type="text" datepicker="" 
        ng-model="ca.caDate"/> 
       </span> 
      </td> 
     </tr> 
    </tbody> 
</table> 

In my controller 

$scope.correctedOption = [{ caValue: 1, caText: 'Yes' }, { caValue: 2, caText: 'No' }]; 

を持つテーブルを使用すると、選択オプションで[はい]を選択した場合、ユーザはなしを選択した場合、ユーザは、日時入力にしている場合の値を入力することができますされてい入力した値をリセットする必要があります。

$scope.GetCorrectedCAData = function (ca, item) { 
    if (item.caValue === 2) { 
     $scope.ca.caDate = "" 
    } 
} 

this did not work. Error : Cannot set property 'caDate' of undefined 
at ChildScope.$scope.GetCorrectedCAData 

第二:入力

<input id="caDate_{{ca.QuesID}}" name="caDate_{{ca.QuesID}}" type="text" datepicker="" 
        ng-model="ca.caDate"/> 
And in controller 
if (item.caValue === 2) { 
     angular.element(document.querySelector("#caDate_" + ca.QuesID)).val(""); 
    } 
this also did not work. Error:Missing instance data for this datepicker 

第三に追加しましたID:スプライスCASelectListを通じて行をループしてスプライスされた行を追加し、私はいくつかのことを試してみました、それはどれも、まず

を働いていません日付の空のデータ。多くのレコードがたくさんあるので、これを使用したくない。

日付ピッカーディレクティブng-repeat

ngControlMod.directive('datepicker', function() { 
    return { 
     require: 'ngModel', 
     link: function (scope, el, attr, ngModel) { 
      $(el).datepicker({ 
       onSelect: function (dateText) { 
        scope.$apply(function() { 
         ngModel.$setViewValue(dateText); 
        }); 
       } 
      }); 
     } 
    }; 
}); 
+0

質問に関連する点をコントローラに投稿できますか? '$ scope.ca'とは何ですか? – JustinJmnz

+0

CASelectListは、ng-repeatを使用してテーブルにデータを設定します。 。上記の表を見てください。入力と選択はca.caDateとca.Correctedでバインドできます。だから、ユーザーが答えにnoを選択したとき、$ scope.ca.caDate = ""を使用して選択した日付を削除したかった – DotNetBeginner

答えて

1

caがコントローラに$scope.caと同じcaありません。 $scope.caを実行しているときは、コントローラーにcaと呼ばれる変数$scopeがあることを意味します。このように、

var Controller = function($scope) { 
    $scope.ca = { 
     caDate: "some date"; 
    } 
} 

あなたはあなただけ、あなたは(私はあなたがしたいと思う) ng-repeatの各 CASelectList内の値を参照したい場合は Error : Cannot set property 'caDate' of undefined $scope.caためには

上に存在しないことを取得しますをcaの前に置いてください。コードは次のようになります

var Controller = function($scope) { 
    $scope.GetCorrectedCAData = function (ca, item) { 
     if (item.caValue === 2) { 
      ca.caDate = ""; // This will change the ca value of the certain ca in CASelectList 
     } 
    } 
} 
+0

それは動作しませんでした。 caDateはリセットされません。 – DotNetBeginner

+1

'$ scope.ca = ...'ただ、ドロップにそれを変更しないでください:(SelectCorrected.caValueは=== 2){ ""} $ scope.ca = { caDate}場合、私はこの を使用しました'$ scope.'の前に' ca.caDate = ""; ' – JustinJmnz

+0

ああ私の悪い。もう一度試してみましょう – DotNetBeginner

関連する問題