c8yMeasurements.latest(filter, realtime)
.then(function (latestMeasurement) {
vm.text = latestMeasurement.c8y_TemperatureMeasurement.T.value;
console.log(vm.text);
});
我试图使用该文档从某个设备中获取最新测量值:>
但是,我不太确定realtime
事情实际上是如何工作的。我将realtime
设置为true,但是每次代理更改值时,vm.text
的值并未更新。
要处理它,我在JS中使用了setInterval
方法(这很讨厌T t(。然后在我的自定义应用程序中正常工作。
但是,在i c8y build:plugin hello
(hello
是我的插件的名称(并将zip文件上传到驾驶舱后,该值无法获取。
请帮助:(谢谢。
为了使其实时工作,您需要将结果包裹到一个函数中,以便在更新模型时可以将其调用。这里一个示例
function getLatestMeasurementForDatapoint({ fragment, series, __target }) {
return c8yMeasurements.latest({
fragment,
series,
device: _.get(__target, 'id')
}, true)
.then(
(rtLatestMeasurement) => {
return {
value: () => _.get(rtLatestMeasurement, [fragment, series, 'value'])
};
}
);
}
在您的控制器中您可以调用此功能,该功能将返回包含键值
的对象getLatestMeasurementForDatapoint(vm.datapoint)
.then((latestMeasurement) => { vm.latestMeasurement = latestMeasurement; });
最终在您的模型中,您可以参考该结果。请注意,值是一个函数,因此您需要称其为函数。
{{vm.latestMeasurement.value()}}