2016-08-25 5 views
0

私のフォームで作業中のディレクティブを作成しようとするのは本当に苦労しています。 私は古いブラウザの互換性を維持するためにプラグインを使用する必要がある日時フィールドを持っています。 Angularjsディレクティブが親スコープを更新していません

この

私が達成しようとしている何
app.directive('dateTimePicker', function(){ 
    return { 
     restrict : 'AE', 
     scope : { 
      value : '=' 
     }, 
     link : function($scope, element, attrs){ 
      element.bind('blur', function(){ 
       $scope.value = element.val(); 
        $scope.apply; 
      }); 
     } 
    } 
}); 

これは私の指示である私のhtml

<input ng-model="search.endDate" type="text" date-time-picker value="search.endDate" class="form-control"> 

です:親スコープで 私は$ scope.search.endDate、どの後で送信される日付を格納します。

私はテンプレートなしでディレクティブを使用したいと思うし、そのフィールドの値を変更するたびに、親スコープの値が更新されます。

私の問題: 上記のコードは2016年8月25日12:21に変換私は、プラグインから日時を選択することができるよ特定のポイント、まで働いているが、 $ scope.applyは初めての動作です。つまり、プラグインから別の日時を選択すると、親スコープ変数は更新されなくなります。

フィールドの値を変更して、変更を親スコープに伝播する方法はありますか?

私は間違っていますか?

EDIT1:

element.bind('blur', function(){ 
       $scope.value= element.val(); 
       $scope.$apply(); 
      }); 
+1

適用は関数です... $ scope。$ apply()。 – Ruhul

+0

omg、私は非常に愚かなatm感じ、私は解決策を見つけることを試みる多くの時間を失った、私はstackoverflowの質問の束を読んだ。そして、私が必要としていたのは、$ scopeの代わりに$ apply()を呼び出すことでした。 – user1195961

答えて

0

ruhulは$適用指摘したように機能ですので、あなたが実際にそれを呼び出す必要があります。

ただし、スコープ変数に頼ることは最善の方法ではありません。

restrict : 'AE', 
    require : '^parentDirective', 
    scope : { 
     value : '=' 
    } 

そして、あなたが実際にあなたがスコープを汚染せずに行う必要があるものは何でも行うことができます:あなたのディレクティブは、実際に親ディレクティブに依存するため、私は親のコントローラをちょうど必要としたいよう は思えます。

関連する問題