2013-03-22 44 views
1

如果大于特定值,我正尝试使用敲除来隐藏文本。出于某种原因,我无法得到它的工作。当我点击测试按钮第二个文本字段应该显示..当值发生变化时不会显示敲除

<body class="calc" onLoad="createnav()"> 
<input type="button" value="test" /> 

<p data-bind="text: 'This shows', if: 6 > 4" ></p> 
<br>  
<p data-bind="text: 'This does Not', if: 6 > qty"></p> 

下面是脚本:

function AppViewModel() { 
    this.qty = ko.observable("1"); } 
    // Activates knockout.js 
    var app = new AppViewModel(); ko.applyBindings(app); 

//When I click button I want the name to change 
$('input[type=button]').click(function() { 
    var sum = '5'; 
    app.qty(sum); 
}); 

http://jsfiddle.net/d577K/44/

回答

4

正如其他人所指出的那样,你要比较的可观察对象qty,而不是它的价值qty()

但你也可能想考虑让你的文本计算出来

Fiddle Example

<p data-bind="text: output"></p> 

function AppViewModel() { 
    var self = this; 
    this.qty = ko.observable("1"); 
    this.output = ko.computed(function(){ 
     return (6 > self.qty()) ? "This shows too" : ""; 
    }); 
} 

这是一种更具敲打效果的做事方式,它提供了将逻辑保留在视图模型中而不是将其混合到标记中的优势。

除此之外,您可以在调试时清楚地看到您的javascript值,并注意到qty是一个函数而不是数字。

它还允许您在不重复计算的情况下重复使用此值,以便在多个位置显示它。

0

您需要访问数量观察到的值:

<p data-bind="text: 'This does Not', if: 6 > qty()"></p>

0

简单,

<p data-bind="text: 'This does Not', if: 6 > qty()"></p> 

时观察到的属性在表达式中使用,不能使用声明绑定(无parenthis)

相关问题