Одинаковое значение привязки данных для двух наблюдаемых в knockoutjs - PullRequest
0 голосов
/ 25 февраля 2019

Это мой код HTML:

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

А это мой код JavaScript:

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

questionText is data-привязан к текстовой области, и значение можно наблюдать в обоих направлениях. Я хочу, чтобы questionObj.title получил то же значение внутри questionObj.questionText.Есть ли способ связать так же?

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Это решило мою проблему ....

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

    questionObj.title(questionObj.questionText);
0 голосов
/ 25 февраля 2019

@ Iam_NSA ответ:

Привет.Несмотря на то, что вы, возможно, получили функциональность, которую искали, стоит отметить, что вы сделали 2 наблюдаемых, а затем вы присваиваете ссылку на одну из наблюдаемых, которая сама себе, а не ее значение, на другую.Если вы не сделаете это преднамеренно, чего вы не делаете, в противном случае вас бы здесь не спрашивали: P, вам следует избегать этого.По сути, у вас есть только одна наблюдаемая на вашем месте, что было бы равносильно привязке одной наблюдаемой к двум различным элементам.

Вам лучше создать чисто вычисленную ИЛИ подписку, например, так:

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

    questionObj.questionText.subscribe(function(val){
        questionObj.title(val);
    });
0 голосов
/ 25 февраля 2019

Вы хотите сказать, что хотите, чтобы обе наблюдаемые имели одинаковое значение?Для этого вы можете использовать pureComputed наблюдаемое.

Измените свое наблюдаемое определение следующим образом:

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

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