我目前正在开展一个Ionic项目,您可以搜索一些二手车。 该应用程序还包括一些带范围滑块的过滤器,用于设置值,如下所示:
我现在的问题是,启动时过滤器设置为默认值:
user_settings = {price:{min:0,max:200000}}
在玉文件中使用:
.item.range.range-positive
input(type="range", min="{{filter.range.min}}", max="{{filter.range.max}}", step = "{{filter.range.step}}", ng-model="user_settings[filter.id].max", id= "handle")
重置此值可正常工作并将滑块设置为0和200000.但在启动时,滑块仍然如下所示:
我之前已经明白,在打开过滤器时和DOM元素为零之前,首先会设置滑块。但是当我打开过滤器时,会对DOM进行评估,但是该值设置为100而不是ng-models值。
我尝试了ng-init并重新加载示波器,但这只是没有用......
无论如何都要在启动时创建所有DOM元素吗?
编辑1:
以下是启动应用程序的控制器代码:
angular.module("starter.controllers", [])
.controller "AppCtrl", ($scope, $ionicModal, $timeout, FilterService, $state) ->
$scope.filters = FilterService.settings
$scope.sort = FilterService.user_settings['sort']
$scope.resetFilters = ->
FilterService.resetFilters()
$state.go('app.cars', {}, {reload: true})
$scope.resetFilters()
其中resetFilters()调用以下代码:
user_settings的初始值:
user_settings = {sort: {attribute: 'offerPrice', direction: 'asc'}, price:{}, firstregistration:{}, power_ps:{},mileage:{}, emission:{}}
重置过滤器的代码:
resetFilter: (filter) ->
if filter.id in ['price', 'firstregistration', 'power_ps', 'mileage', 'emission']
user_settings[filter.id].min = filter.range.min
user_settings[filter.id].max = filter.range.max
else
delete user_settings[filter.id]
resetFilters: ->
console.log(user_settings)
for filter_name, user_setting of user_settings
if filter_name == 'sort'
continue
@resetFilter(@find(filter_name))
过滤器对象包含硬编码的最小值和最大值。
希望有助于澄清...