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

жаль, что не сосредоточить основную идею. во-первых, «путь 2» лучше всего, потому что, когда выбрана датапикер, вы должны обновить значение «model value», «view value» и другое состояние формы like 'form. $ valid, form. $ dirty ...'. 'model. $ setViewValue (value)' сделает все для вас. – user2530403

+0

Все нормально. Вы сказали, что лучше всего я могу узнать, что такое рассуждение. Является ли он более совершенным, чем другие. –

Смежные вопросы