[英]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.