将日期对象按角度传递到指令
Angular passing date object to directive
我正试图通过属性将日期对象传递给指令。但是日期被解析为ISO字符串,我无法将其解析为日期对象。
什么是正确和最简单的方法?
这是我的代码:
html:
<body ng-app="myApp">
<div ng-controller="ctrl">
<div myDir date={{date}}></div>
</div>
</body>
控制器:
var app = angular.module('myApp', []).controller('ctrl', function($scope) {
$scope.date = new Date();
});
指令:
app.directive('myDir', function() {
return {
template: '',
scope: {},
link: function(scope, el, attrs){
console.log('attrs.date: ', attrs.date;);
var d = new Date(d);
console.log('date: ', d);
}
};
});
输出为:属性日期:"2015-11-16T05:53.159Z"日期:无效日期
我不想使用在具有'='的作用域上获取参数的方法。是否有其他方式将日期发送到指令?
谢谢。
当前您正在从属性中获取值,然后再次将该值从字符串转换为date
,这就是您的日期变为invalid
的原因。
我建议您不要通过属性传递值,而是从指令的隔离范围传递该值,这将在不需要任何转换的情况下传递对象值。
标记
<div my-dir my-date="date"></div>
指令
app.directive('myDir', function() {
return {
template: '',
scope: {
myDate : '=' //mapped with `my-date` attribute on directive element.
},
link: function(scope, el, attrs){
console.log('date: ', scope.myDate );
}
};
});
将模板更改为:
<div my-dir date="date"></div>
</div>
myDir而不是myDir,因为angular对连字符分隔的名称执行规范化,并将其转换为驼色大小写。
此外,由于指令具有隔离作用域(作用域:{}),因此不需要在指令属性内插入表达式。
最后,将指令的范围更改为:
scope: {
date: '='
}
并在链接函数中使用scope.date。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 参数变量出现ngTable指令问题
- 比较从函数和生成的日期对象
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- AngularJS自定义日期选择器指令
- 正在将日期范围选择器转换为角度指令
- 日期-时间范围指令字段未显示任何值
- 角度数据-bs-日期选择器指令 + 日期更改
- 将引导日期选取器包装为指令
- 如何使用 AngularJS ui-date 指令格式化初始日期值
- 如何绑定角度引导的bs日期选择器指令的select事件
- 如何在AngularJS中使用日期选择器,使用自定义指令作为类
- 角度ui和日期选择器指令错误
- angularJs指令格式日期
- 将日期对象按角度传递到指令
- 我可以使用Angularjs指令将日期选择器添加到HTML元素中吗
- 扩展时钟组件的角度指令以单独显示日期时间元素
- 通过angular指令属性传递一个日期
- 自定义到期日期指令抛出rootScope摘要错误
- 在Angular JS中,引导日期时间选择器对指令不起作用