2016-10-21 4 views
0

入力または選択タグの変更をトリガするために$ watchを使用しています。すべてうまくいっていますが、ng-changeディレクティブを使用するウォッチャーの代わりにリファクタリングする必要があります。選択タグは機能していますが、入力タイプの場合は機能していますが、関数は呼び出されません。コントローラでの入力時のng-changeの構文が正しく動作しない

入力ビュー

<div> 
    <input date-range-picker type="text" ng-model="reviewvm.review.extDate" 
    ng-change="reviewvm.changed(reviewvm.review.extDate)" 
options="{locale:{format: 'MM/DD/YYYY'}, singleDatePicker:true}" /> 
    <span data-ng-click="reviewvm.openExitConfDatePicker()"> 
     <i class="icon-calendar"></i> 
    </span> 
</div> 

ビュー選択

<select ng-change="reviewvm.agencyChanged(reviewvm.agency)" 
data-ng-model="reviewvm.agency" data-ng-options="agency as agency.agencyName for agency in reviewvm.refAgencies track by agency.id""> 
    <option value="">Select {{reviewvm.area}} Department or Agency</option> 
</select> 

機能

reviewvm.changed = changed; 

function changed(current, original) { 
    console.log(current + " - " + original); 
} 

function agencyChanged(current, original) { 
    console.log(current + " - " + original); 
} 

私はSEのための同じアプローチを言ったようにLECTと入力が、入力のために、それは....変更関数内

を行っていませんPlunker

https://plnkr.co/edit/STyQT4SivGuAdzy5ADGl?p=preview

更新

<div data-ng-class="{'not-allowed input-group' : !reviewvm.userReviewAssoc || !reviewvm.editMode, 'input-group' : reviewvm.userReviewAssoc}" data-ng-show="reviewvm.review.actualStartDt"> 
         <input id="extConfDate" class="form-control date-picker" date-range-picker data-ng-disabled="!reviewvm.userReviewAssoc || !reviewvm.editMode" type="text" 
           ng-model="reviewvm.review.exitConfDt" ng-change="reviewvm.exitConfChanged(reviewvm.review.exitConfDt)" 
           min="reviewvm.review.actualStartDt" max="reviewvm.currDate" placeholder="mm/dd/yyyy" options="{locale:{format: 'MM/DD/YYYY'}, singleDatePicker:true}" /> 
         <span data-ng-class="{'not-allowed input-group-addon' : !reviewvm.userReviewAssoc || !reviewvm.editMode, 'input-group-addon' : reviewvm.userReviewAssoc}" data-ng-click="reviewvm.openExitConfDatePicker()"> 
          <i class="icon-calendar"></i></span> 
        </div> 


function exitConfChanged(current, original) { 
      console.log(current) 
     } 

これは私が得た方法であります現在と元のテキストを使用したプルダウンでの作業:

ng-change="reviewvm.reviewTypeChanged(reviewvm.review.reviewType, '{{reviewvm.review.reviewType}}')" 

と、コントローラで:

function reviewTypeChanged(original, current) { 
    if (original !== "") { 
       original = angular.fromJson(original); 
    } 
console.log(original + " - " + current); 
} 

そして、これは私が現在および以前の選択が、入力のない取得していますすべてのドロップダウンリストの正常に動作している...

私は多分それはないと思われますこのエラーフォームアンギュラdaterangepickerの関数原因の内側に行く:

TypeError: Cannot read property 'startDate' of null 
    at Array.<anonymous> (angular-daterangepicker.js:93) 
    at Object.ngModelWatch (angular.js:23555) 
    at Scope.$digest (angular.js:14404) 
    at Scope.$apply (angular.js:14675) 
    at done (angular.js:9725) 
    at completeRequest (angular.js:9915) 
    at XMLHttpRequest.requestLoaded (angular.js:9856)(anonymous function) @ angular.js:11706(anonymous function) @ angular.js:8619$digest @ angular.js:14430$apply @ angular.js:14675done @ angular.js:9725completeRequest @ angular.js:9915requestLoaded @ angular.js:9856 

が、多くの人がまだ同じエラーと無修正を持って、私はインターネット上で探していた原因、それを修正する方法がわからない...

+0

'date-range-picker'ディレクティブのコードは何ですか?分離されたスコープを使用していますか?もしそうなら、それは問題を引き起こす可能性があります。 – georgeawg

+0

@Bukic、このplnkrを確認してくださいhttps://plnkr.co/edit/hQlKSlso5kPHqsH27Ksf?p=preview –

+0

@VinayKあなたのプランナーが動作しているのを見て、私はconsole.logで価値を得ています...しかし、私と私の機能に行くことはありません....私は私の質問を更新しました。 – Bukic

答えて

1

ng-change式の内部に{{}}を使用しないでください。

ng-change="reviewvm.agencyChanged(reviewvm.agency, (reviewvm.agencye || 'null'))" 

「null」を文字列として使用する特別な理由はまだありますか?

+0

ちょっとPankaj、何らかの理由で私は古い値を括弧内の2番目のパラメータとして送る必要があると思っていましたが(stackoverlowでこれを見つけました)、コメントした後に2番目のパラメータを削除しても、しかし、入力タイプの場合、私はまだ成功することはできません。コードを更新しました。 – Bukic

+0

Bukicでplunkrを作成できますか? –

+0

私はplunkerを追加しましたが、何らかの理由でplunkerを実行できません。角が定義されていないというエラーが発生します。私はプランカにあまり慣れていません – Bukic

関連する問題