【问题标题】:Slider initial value not applying滑块初始值不适用
【发布时间】:2017-06-19 18:39:42
【问题描述】:

在我的 nativescript 2.5.0 应用程序中,我有一个滑块,定义为:

<Slider id="slider" class="slider" value="{{ amount }}" minValue="{{ minAmount }}" maxValue="{{ maxAmount }}" />

当页面在 on navigatingTo 事件中加载时,我正在使用相应的值(amount、minAmount 和 maxAmount)设置模型:

var model = null;
function onNavigatingTo(args) {
	page = args.object;
	model = new Observable();
  
  model.set('amount', 100);
  model.set('maxAmount', 500);
  model.set('minAmount', 0);

	page.bindingContext = model;
}

我还有一个绑定到显示滑块选择的“数量”属性的标签。

在 Android 上,当页面加载时,滑块正确设置为 100,但在 iOS 中,即使“金额”属性设置正确且标签显示“100”,滑块仍设置为 0

我尝试在加载的事件中获取滑块的引用并在那里手动设置值,但这也不起作用。

我错过了什么吗?我还需要配置其他什么东西才能在 iOS 中进行这项工作吗?

谢谢。

【问题讨论】:

    标签: nativescript


    【解决方案1】:

    我能够重现该问题,发生这种情况的原因是因为在您的代码中,该值是通过视图模型(绑定)设置的。在这种情况下,滑块会迭代并分配 XML 布局中声明的值 - 这意味着它将尝试为 value 属性分配 300 的值,但此时 minValue 的值ma​​xValue 仍然是默认值(0 和 100),这是导致问题的原因。解决方案非常简单 - 当使用绑定来分配 Slider 的初始值时首先声明minValue 和 ma​​xValue(创建限制),然后才在这些限制内分配实际的 value

    例如根据您的代码 sn-p

    <Slider minValue="{{ minAmount }}" maxValue="{{ maxAmount }}" value="{{ amount }}" />
    

    与您的代码的唯一区别是 value 现在位于末尾,滑块将首先创建最小值和最大值,然后才能分配 300 的值。 示范项目可以在here找到。

    【讨论】:

    • 谢谢尼克。这非常有效。也许这是文档中注释的好候选。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2018-04-25
    相关资源
    最近更新 更多