2016-09-28 103 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

没关系。你说的方式最好,我可以知道背后的原因。比其他人表现更好吗? –

相关问题