敲除检查变量是否返回true和false

时间:2014-11-17 20:39:25

标签: javascript knockout.js

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

但是,我遇到了一个案例,我需要操纵该变量以始终存在,但其值为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')));
}

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

如果在视图中您总是处理该函数,那么请确保您处理的属性始终有效TRUEFALSE

我注意到您使用布尔值将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属性定义为可观察对象,然后通过以下方式更新可观察值:

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' }">