Angular.js指令元素的默认值
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,作用域变量就会更新为文本框中的内容。
如果你能进一步说明你在做什么,我可以更具体地帮助你。
HTH
相关文章:
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 如果值为空,如何设置输入的默认值?jQuery
- 骨干模型默认值-todos.js示例中不必要的代码
- jquery日期选择器年份范围默认值
- Html5输入属性的默认值,如最小值、最大值、大小等
- 是否可以同时为一个元素的所有事件指定阻止默认值
- 在 asp.net 中设置表单元素默认值
- 当通过AJAX绑定选项时,是否可以将select元素的默认值传递给Knockout
- Select2使用远程数据加载单选元素中的默认值
- 画布元素的宽度或高度更改后,其 2d 上下文的字体将设置为默认值
- 通过单击SELECT选项,将文本INPUT元素的VALUE动态设置为默认值
- HTML选择元素-自定义默认值?(跨浏览器解决方案)
- 是新创建的元素,它不是DOM样式的一部分,或者所有值都设置为默认值
- 如何防止其元素内部链接的默认值
- 将元素的属性设置为"from"中的默认值关键帧规则关键字
- 选项元素没有默认值-angularJs
- 如何定义HTML表单元素的默认值而不填充字段
- 将游标设置为具有的元素的默认值是非活动类
- Angular.js指令元素的默认值