【问题标题】:knockout checking if variable returns true and false淘汰检查变量是否返回真假
【发布时间】:2014-11-17 20:39:24
【问题描述】:

我的应用程序中有几个实例,如果变量存在并且它工作正常,我正在设置样式。

但是,我刚刚遇到了一种情况,我需要操纵该变量以使其始终存在,但其值为 true 或 false。我已经尝试了一些事情,但我尝试的所有事情似乎都让我感到震惊,要么数据绑定项不存在,要么它不是布尔值。

我的数据绑定看起来像这样,没有任何修改,如果值不为假,它可以正常工作。

<div data-bind="style: {float: Show() ? 'right' : 'none', width: Show() ? '70%' : '100%'}">

我试过了

<div data-bind="style: {float: Show() != false  ? 'right' : 'none', width: Show() != false ? '70%' : '100%'}"> 

在 false 和没有引号的情况下都有引号

我试过了

<div data-bind="style: {float: Show() > 0  ? 'right' : 'none', width: Show() > 0  ? '70%' : '100%'}">

但这只是返回它不是布尔值

这就是变量从视图中返回的样子

if(this.app.get('Wait').length === 0){
    model.Show = false;
}else{
    model.Show = ko.observable(JSON.parse(this.model.get('Show')));
}

任何帮助将不胜感激

【问题讨论】:

  • Show代替Show()怎么样
  • 如果列表总是被隐藏的话就可以了,但是当它需要显示时会抛出一个错误
  • 它抛出的错误是什么?
  • 在视图初始化期间 viewModel 创建失败:SyntaxError: Unexpected token u 当我在研究这个之前,我被告知我需要 (),因为它在技术上是一个函数
  • 旁注,最好将样式放在 CSS 中,并使用 observable 打开和关闭一个类。

标签: javascript knockout.js


【解决方案1】:

如果在视图中你总是处理函数,那么确保你处理的属性总是函数,无论是TRUE还是FALSE

我注意到您将 Show 属性初始化为/使用布尔值:

if(this.app.get('Wait').length === 0){
    model.Show = false; // HERE IS INCORRECT
}else{
    model.Show = ko.observable(JSON.parse(this.model.get('Show')));
}

因此,请尝试尽早将您的 Show 属性定义为 observable,然后通过以下方式更新 observable 值:

model.Show = ko.observable(false); // Define with default value wheter TRUE or FALSE

if(this.app.get('Wait').length === 0)
{
    model.Show(false); 
}
else
{
    model.Show(JSON.parse(this.model.get('Show')));
}

然后,在视图中你总是可以这样使用它:

// Check whether value is FALSE
<div data-bind="style: { float: ! Show() ? 'right' : 'none' }">

// Check whether value is TRUE
<div data-bind="style: { float: Show() ? 'right' : 'none' }">

【讨论】:

  • 可以简化成model.Show = ko.observable(this.app.get('Wait').length ? JSON.parse(this.model.get('Show') : false);
猜你喜欢
  • 2015-08-11
  • 2013-10-27
  • 1970-01-01
  • 2019-12-24
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 2018-04-19
相关资源
最近更新 更多