2016-09-28 8 views
0

私は角度の基本を知っていて、コンセプトを実装するためのさまざまな方法を学んでいます。以下に見つけた以外の方法で範囲とビューをバインドする方法があるのだろうか?これはベストプラクティスです。私がどこか間違っているなら、私を修正してください。ディレクティブを使用した双方向バインディングの他の方法

jquery datepickerを使用しています。

var app = angular.module('myApp', []); 
app.controller('myController', ['$scope', function($scope){ 
    $scope.date = ""; 
    $scope.submitDate = function(){ 
     console.log($scope.date); 
    }; 

}]); 
app.directive('myDatepicker', function(){ 
    return { 
     scope: { 
      date: "=" 
     }, 
     restrict: 'EA', 
     require: "ngModel", 
     link: function(scope, element, attributes, modelController){ 
      element.datepicker({ 
       changeMonth: true, 
       changeYear: true, 
       dateFormat: "dd/mm/yy", 
       onSelect: function(value, picker){ 
        ////way 1 
        scope.date = value; 
        scope.$parent.$digest(); 
        ////way 2 
        modelController.$setViewValue(value); 
        ////way 3 
        element.val(value); 
        element.trigger('input'); 
        ////way 4 
        scope.$apply(function(){ 
        scope.date = value; 
        }); 
       } 
      }); 
     } 
    } 
}) 

答えて

0

ウェイ2が最適です。しかし、あなたは完了していない。

  • はあなたにいくつかの機能が必要とされているmodelController.$render = function() {...}
  • による入力を初期化、私はあなたを取得していない外部パラメータ
+0

を受け入れるng-disabled ...

  • が好き。 ng-disabledで何をしなければならないのですか?つまり、ビューとモデル値をディレクティブから設定するさまざまな方法を知りたいだけです。 どうすれば$ renderかng-disabledでそれを達成できますか? –

  • +0

    申し訳ありませんが主なアイデアに焦点を当てます。最初に 'way 2'が最適です。datepickerが' model value'を更新しなければならないとき、 'view value'と他のフォームステータスは' form。$ valid、form。$ dirty ... 'が好きです。 'model。$ setViewValue(value)'はあなたのためにすべてを行います。 – user2530403

    +0

    問題ありません。あなたは、その背後にある推論を知っているかもしれません。それは他人よりも演奏家ですか? –

    関連する問題