使用指令进行双向绑定的任何其他方式

时间:2016-09-28 08:58:01

标签: angularjs angular-directive

我知道角度的基础知识并且仍在尝试学习实现概念的不同方法并且想知道是否有任何其他方式将数据绑定到范围和视图以外的其他方式,这是最佳实践。如果我错了,请纠正我。

我正在使用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;
                    });
                }
            });
        }
    }
})

1 个答案:

答案 0 :(得分:0)

方式2是最好的。但你工作不完整。

  • modelController.$render = function() {...}
  • 初始输入
  • 需要一些功能,例如ng-disabled ...
  • 接受外部参数