在ng-repeat td内部调用角度函数。从td中获取值并从函数值中替换它。以下代码不起作用。相同的getCSTDateTime而不是date出现在表中。我想将系统日期转换为cst date。 例如:
<td id="txt">{{getCSTDateTime(document.lastUpdateDateTime)}}</td>
</tr>
我已经按照流程在堆栈中进行搜索,并按照上述步骤进行操作。并将此功能也添加到$ Scope中。但是,此函数仍未调用并返回我的值。
$scope.getCSTDateTime = getCSTDateTime;
$scope.getCSTDateTime= function(lastUpdateDateTime) {
var currentDate =lastUpdateDateTime;
var cstDate;
var hour;
var minutes;
var seconds;
var jan = new Date(currentDate.getFullYear(), 0, 1);
var jul = new Date(currentDate.getFullYear(), 6, 1);
var timezoneOffset =Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
// Check if daylight savings
if (currentDate.getTimezoneOffset() < timezoneOffset) {
// Adjust date by 5 hours
cstDate = new Date(currentDate.getTime()-((1 * 60 * 60 * 1000) * 5));
}
else {
// Adjust date by 6 hours
cstDate = new Date(currentDate.getTime() - ((1 * 60 * 60 * 1000) * 6));
}
hour = cstDate.getHours();
minutes = cstDate.getMinutes();
seconds = cstDate.getSeconds();
m = checkTime(minutes);
s = checkTime(seconds);
//date:"MM/dd/yyyy h:mma" :'CDT'
var month = cstDate.getUTCMonth() + 1; //months from 1-12
var day = cstDate.getUTCDate();
var year = cstDate.getUTCFullYear();
document.getElementById('txt').innerHTML = month + "/" + day + "/" +year +" "+h+":"+m;
};
//var Date.prototype.stdTimezoneOffset = $( function () {
// var jan = new Date(this.getFullYear(), 0, 1);
// var jul = new Date(this.getFullYear(), 6, 1);
// return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
//});
//Date.prototype.isDstObserved = function () {
// return this.getTimezoneOffset() < this.stdTimezoneOffset();
//}
var checkTime=$(function checkTime(i) {
if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
});
我希望调用在控制器内部定义的函数
答案 0 :(得分:0)
获得相同日期时间的原因是您没有使用从函数调用传递的lastUpdateDateTime。
{{ getCSTDateTime(document.lastUpdateDateTime)}}
$scope.getCSTDateTime= function() {....
您需要对传递给函数的参数进行操作
$scope.getCSTDateTime= function(lastUpdateDateTime) {.... get date calculations....
然后将您在该日期/时间进行的计算返回到td进行插值。
并且如前所述-更改#txt的innerHTML并不是非常有角度的-您应该通过更改传递到后面模型的数据来更改值,以便可以在数据更改时更新DOM。
答案 1 :(得分:0)
更改此行:
document.getElementById('txt').innerHTML = month + "/" + day + "/" +year +" "+h+":"+m;
收件人:
return month + "/" + day + "/" +year +" "+h+":"+m;
第一次调用该方法时,.innerHTML就会删除您的插值指令{{}},并且永远不会再更新。