2016-09-28 108 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() {...}
  • 需要一些要素輸入,喜歡ng-disabled ...
  • 接受外部參數
+0

我沒有得到你。它與ng-disabled有什麼關係。我的意思是我只是想知道不同的方法來設置指令的視圖和模型的值。 如何用$ render或ng-disabled來實現此目的。 –

+0

對不起主要想法。首先,'way 2'是最好的選擇,因爲當選擇datepicker時,你必須更新'model value','view value'和其他形式的狀態,比如'form。$ valid,form。$ dirty ...'。 'model。$ setViewValue(value)'將爲你做所有事情。 – user2530403

+0

沒關係。你說的方式最好,我可以知道背後的原因。比其他人表現更好嗎? –

相關問題