敲除js中两个可观察到的相同数据绑定值

时间:2019-02-25 10:23:07

标签: javascript html data-binding knockout.js knockout-2.0

这是我的HTML代码:

<textarea name="Question" id="Question" data-bind="value:questionObj.questionText></textarea>

这是我的JavaScript代码:

questionObj = {
       questionText: ko.observable(' '),
       title:  ko.observable(' ')
};

questionText数据绑定到文本区域,并且该值都是双向可见的。我希望questionObj.title在questionObj.questionText内部获得相同的值。有没有办法同样绑定?

3 个答案:

答案 0 :(得分:0)

您的意思是您希望两个可观察值具有相同的值?您可以为此使用pureComputed

像这样更改您可观察的定义:

questionObj = {
   questionText: ko.observable(' ')
};

questionObj.title = ko.pureComputed(function(){
    return questionObj.questionText();
}, questionObj);

答案 1 :(得分:0)

这解决了我的问题。...

   questionObj = {
           questionText: ko.observable(' '),
           title:  ko.observable(' ')
    };

    questionObj.title(questionObj.questionText);

答案 2 :(得分:0)

@Iam_NSA响应:

嘿。 尽管您可能已经找到了想要的功能,但值得注意的是,您所做的是2个可观察对象,然后将引用分配给它本身的一个可观察对象,而不是其值分配给另一个。除非您是故意这样做的,否则您不会这样做,否则您将不会在这里问:P,则应避免这样做。 本质上,您只有一个可观察的对象,这等同于将相同的可观察对象绑定到2个不同的元素。

最好创建像这样的纯计算或订阅:

questionObj = {
           questionText: ko.observable(' '),
           title:  ko.observable(' ')
    };

    questionObj.questionText.subscribe(function(val){
        questionObj.title(val);
    });