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

3 回答 3

4

正如其他人指出的那样,您正在比较可观察对象qty而不是其值qty()

但您也可能需要考虑将您的文本设置为计算

小提琴示例

<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 是一个函数而不是一个数字。

如果您想在多个位置显示它,它还允许您重复使用此值而无需重复计算。

于 2013-03-22T03:45:47.423 回答
0

您需要访问 qty observable 的值:

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

于 2013-03-22T03:40:34.863 回答
0

简单的,

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

在表达式中使用可观察属性时,不能使用声明性绑定(无括号)

于 2013-03-22T03:41:03.777 回答