[英]Default values for an Angular.js directive element
我的问题是我需要创建一个指令,该指令从控制器作用域中获取它的元素,或者如果未在作用域中定义它从DOM元素中获取它。
这是我的指令:
rmsUtils.directive('rmsDateRange', ['$parse', function($parse) {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attrs, controller) {
var date = {
'start' : element.find('[rms-date-range-field=start]').val(),
'end' : element.find('[rms-date-range-field=end]').val(),
};
element.datepicker({
format: "yyyy",
startView: 1,
minViewMode: 2,
autoclose: true
}).on('changeDate', function(e){
var year = e.date.getFullYear(),
id = e.target.getAttribute('rms-date-range-field');
date[id] = String(year);
scope.$apply(read);
});
function read() {
controller.$setViewValue(date);
}
read();
}
};
}]);
元素看起来像:
<div class="input-group input-daterange input-group-sm" rms-date-range id="id_birth_date_range" name="birth_date_range" ng-model="filters.birth_date_range" ng-show="showCustomBirthYears()">
<input class="form-control input-xs" type="text" rms-date-range-field="start" value="1980">
<span class="input-group-addon">to</span>
<input class="form-control input-xs" type="text" rms-date-range-field="end" value="1995">
</div>
控制器就是一个简单的ctrl,它定义了$scope.filters.birth_date_range = {start: 2000, end: 2010}
。
将这些值指派正确但是当我的指令被初始化它的重新分配他们到1980年,1995年在link()
我的指令之前调用read()
函数controller.$viewValue
和controller.$modelValue
是undefined
。
任何帮助都非常感激:)
由于在链接功能中将日期变量设置为从开始和结束输入元素获取的值,因此将其重置。 然后,在读取函数中,更新视图值,该视图值又更新模型值(即范围变量)。 因此,一旦链接函数调用read,作用域变量就会更新为文本框中的内容。
如果您可以进一步解释您要做什么,我可以提供更具体的帮助。
高温超导
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.