作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 knockout.js 的新手,我在 View 模型和外部函数方面遇到了一些问题。我想在 View 模型中使用一个声明为内部属性的外部函数。
function testViewModel(i){
self.PositionTimestamp = ko.observable((i.PositionTimestamp == null) ? '-' : moment(i.PositionTimestamp).tz(sitetz).format('YYYY-MM-DD HH:mm:ss'));
self.PositionTimestampG = ko.observable((i.PositionTimestampG == null) ? '-' : moment(i.PositionTimestampG).tz(sitetz).format('YYYY-MM-DD HH:mm:ss'));
self.IsTimeout = ko.observable(ComputeTimeout(i));
self.update=function(data){
self.PositionTimestamp((data.PositionTimestamp == null) ? '-' : moment(data.PositionTimestamp).tz(sitetz).format('YYYY-MM-DD HH:mm:ss'));
self.PositionTimestampG((data.PositionTimestampG == null) ? '-' : moment(data.PositionTimestampG).tz(sitetz).format('YYYY-MM-DD HH:mm:ss'));
self.IsTimeout(data.IsTimeout);
}
}
和这个外部函数:
function ComputeTimeout(i) {
var loct = moment().tz(sitetz);
var lastWiFiTime; var lastGSMTime;
var m_w = moment.tz(i.PositionTimestamp());
var m_g = moment.tz(i.PositionTimestampG());
lastGSMTime = loct.diff(m_g, 'seconds'); lastWiFiTime = loct.diff(m_w, 'seconds');
if (isNaN(lastGSMTime))
lastGSMTime = Number.MAX_VALUE;
if (isNaN(lastWiFiTime))
lastWiFiTime = Number.MAX_VALUE;
if (lastGSMTime <= 30 * 60 || lastWiFiTime <= 30 * 60)
return 0;
if ((lastGSMTime > 30 * 60 && lastGSMTime <= 90 * 60) && (lastWiFiTime > 30 * 60 && lastWiFiTime <= 30 * 60))
return 1;
if (lastGSMTime > 90 * 60 && lastWiFiTime > 90 * 60)
return 2;
}
我收到此错误:JavaScript 运行时错误:需要函数
。
这是因为我没有在 View 模型中正确使用函数?
谢谢!
最佳答案
i 不是 knockout 变量 => PositionTimestamp 不是函数
function ComputeTimeout(i) {
var loct = moment().tz(sitetz);
var lastWiFiTime; var lastGSMTime;
var m_w = moment.tz(i.PositionTimestamp);
var m_g = moment.tz(i.PositionTimestampG);
lastGSMTime = loct.diff(m_g, 'seconds'); lastWiFiTime = loct.diff(m_w, 'seconds');
if (isNaN(lastGSMTime))
lastGSMTime = Number.MAX_VALUE;
if (isNaN(lastWiFiTime))
lastWiFiTime = Number.MAX_VALUE;
if (lastGSMTime <= 30 * 60 || lastWiFiTime <= 30 * 60)
return 0;
if ((lastGSMTime > 30 * 60 && lastGSMTime <= 90 * 60) && (lastWiFiTime > 30 * 60 && lastWiFiTime <= 30 * 60))
return 1;
if (lastGSMTime > 90 * 60 && lastWiFiTime > 90 * 60)
return 2;
}
关于javascript - Knockout 在 viewmodel 中使用外部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32883293/
我是一名优秀的程序员,十分优秀!