【发布时间】:2016-11-22 14:06:58
【问题描述】:
我正在尝试使用如下所示的自定义指令获取角度引导 datetimepicker 输入值。我能够获得指令中的值。如何在角度控制器中访问此指令范围值。
HTML
<div class='input-group date' id='datetimepickerId' datetimez ng-model="dueDate" >
<input type='text' class="form-control" />
</div>
控制器
App.directive('datetimez', function(){
return {
require: '?ngModel',
restrict: 'A',
link: function(scope, element, attrs, ngModel){
if(!ngModel) return;
ngModel.$render = function(){
element.find('#datetimepickerId').val( ngModel.$viewValue || '' );
};
element.datetimepicker({
format : 'YYYY-MM-DD HH:mm:ss'
});
element.on('dp.change', function(){
scope.$apply(read);
});
read();
function read() {
var value = element.find('#datetimepickerId').val();
ngModel.$setViewValue(value);
console.log(scope.dueDate);
}
}
};
});
App.controller('myController', ['$scope', function($scope) {
console.log($scope.dueDate);
}]);
指令内的日志成功打印值。但是在控制器内部没有登录。
【问题讨论】:
-
在第 20 行的 js
$scope.dueDate忘记了 $ 符号。 -
如果我这样做,它会说 $scope 没有定义
-
datetimez ng-model="dueDate"为什么在 div 标签中使用这个而不是在输入中使用? -
是控制器,指令的控制器,还是只是一个页面(不相关的)控制器?
-
控制器初始化时,$scope.dueDate 中没有值。在日期更改时调用的函数中的输入和控制台中添加 ng-change。
标签: angularjs