我们有一个滑块,允许用户选择一个时间段,从该时间段中收集其设备中的数据。时间段的长度应在不同类型的设备上有所不同,因此我需要该值是动态的。问题在于HTML会在http调用完成之前呈现,因此没有数据可查询滑块的长度。
http调用完成后是否可以重新呈现HTML,并且我们拥有所需的数据?
我对这个项目和Angularjs还是陌生的。与React一起工作最多的状态可以很容易地通过状态和Reacts自己的重新渲染功能来解决。
配置滑块
let months
$scope.rangeConfig = {
type: 'double',
step: moment.duration(1, 'days').asSeconds(),
//'min_interval': moment.duration(1, 'days').asSeconds(),
min: +moment()
.utc()
.subtract(months, 'months')
.add(1, 'days')
.startOf('day')
.format('X'),
max: +moment().utc().startOf('day').format('X'),
from: $scope.timeFrom,
to: $scope.timeTo,
drag_interval: true,
grid: true,
prettify: function (num) {
return moment(num, 'X').utc().format('LL')
},
}
HTML中的滑块
<ion-range-slider config="rangeConfig" on-finish="timeSet(data)"></ion-range-slider>
HTTP调用
$rootScope.farm = FarmService.getFarm($routeParams.farmId, function (farm) {
$scope.module = farm.getModule($routeParams.id, function () {
updateLogs()
// Listen for updates.
var room = { type: 'farm', id: farm.id }
SocketIO.join(room)
SocketIO.on('moduleUpdated', function (id) {
if ($scope.module.id === id) {
$timeout(updateLogs, 60000)
}
})
SocketIO.on('connect', function () {
updateLogs()
})
$scope.$on('$destroy', function () {
SocketIO.removeAllListeners('moduleUpdated')
SocketIO.leave(room)
})
})
months = $scope.module.type === 'smartplug' ? 2 : 12
})