1

对于 datepicker 控件,我向输入元素添加了一些自定义属性:

<input id="inputDatepicker" ng-model="currentAppointment.date" data-date-format="dd.mm.yyyy" datepicker changedates="currentAppointment.start">

为此,我创建了一个指令来构建日期选择器:

.directive('datepicker', function ($filter) {
    return {
      restrict: 'A',
      require: '?ngModel',
      link: function ($scope, $element, $attributes, $ctrl) {       

        $scope[$attributes.changedates] ... do not work

        $element.datepicker();    
      }
    }
});

我如何访问 changedates-attribute 中提到的范围变量?在我上面的例子中,我想访问$scope.currentAppointment.start

4

2 回答 2

3

您可以使用$parse服务:

var model = $parse($attributes.changedates)

获得价值

model($scope)

设定值

model.assign($scope, value)
于 2013-05-15T09:44:22.090 回答
0

如果您不需要设置/更改currentAppointment.start指令中的值,并且需要检测值何时更改,请使用$watch(而不是$parse):

link: function (scope, element, attrs, ctrl) {
    scope.$watch(attrs.changedates, function(value) {
        console.log('value=', value);
    });
}

fiddle- 在小提琴中,我包含了一个更改 值的按钮currentAppointment.start,因此您可以观察手表注意到更改(通过控制台)。

于 2013-05-15T15:48:51.913 回答