如何使用包含可观察字符串的表达式获取knockoutjs可见绑定?

时间:2015-08-13 05:56:44

标签: javascript knockout.js

假设在视图模型中定义了一个可观察的字符串stringVal。

data-bind="visible:!stringVal()"或包含stringVal()的任何其他表达式都不起作用。抛出的错误是视图模型中需要函数stringVal()。

类似的表达式很容易使用boolean observables。

2 个答案:

答案 0 :(得分:0)

试试这个 http://jsfiddle.net/w00t_/h6dy46s7/1/

HTML:

<h1 data-bind="visible: notstringval">
    <span data-bind="text: stringval()"></span>
    <span>yo</span>
</h1>

JS:

function myViewModel() {
    self = this;
    self.stringval = ko.observable("hello");
    self.notstringval = ko.pureComputed(function () {
        return !self.stringval();
    })
}

ko.applyBindings(myViewModel);

答案 1 :(得分:0)

这可能是你的Knockout版本。它适用于3.0+版本,但不适用于2.x

function myViewModel() {
  self = this;
  self.stringval = ko.observable("hello");
}

ko.applyBindings(myViewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.0.0/knockout-min.js"></script>
<h1 data-bind="visible: !stringval()">
    <span data-bind="text: stringval()"></span>
    <span>yo</span>
</h1>

<input data-bind="value: stringval" />