具有参数的Knockout Computed Observable

ios*_*eph 4 javascript knockout.js

是否可以提供计算的可观察额外参数?

例如,像这样:

var ViewModel = function(first, last) {
    this.firstName = ko.observable(first);
    this.lastName = ko.observable(last);
    var self = this;
    this.fullName = ko.computed(function(separator) {
       return self.firstName() + ' ' + self.lastName();
    }, this);
};
Run Code Online (Sandbox Code Playgroud)

然后在html中:

<div data-bind="text: fullName(' - ')"></div>
Run Code Online (Sandbox Code Playgroud)

我的实际用例要复杂得多,但这基本上就是我想要实现的,在html中传入一个值,用作计算函数的一部分.

如果失败了,有没有办法制作一个普通的函数,其参数的行为类似于(计算的)可观察的?

Anu*_*raj 17

您可以创建一个返回计算变量的函数.你可以尝试这样的事情.

var ViewModel = function(first, last) {
    this.firstName = ko.observable(first);
    this.lastName = ko.observable(last);
    var self = this;
    this.fullName = function(separator){
    return ko.computed(function () {
            return self.firstName() + separator + self.lastName();}, this);
};
};

<div data-bind="text: ViewModel.fullName('-')"></div>
Run Code Online (Sandbox Code Playgroud)