Knockout.js - как мне получить значение наблюдаемого свойства внутри вычисленного наблюдаемого?
У меня есть следующий объект Knockout.js:
var viewModel = {
description : ko.observable(""),
Name : ko.observable(""),
productid : ko.observable(""),
productmodel : ko.observable(""),
productnumber : ko.observable(""),
text_relevance : ko.observable(""),
mydunamicfield : ko.computed(function() {
return "bq=(and " +
((this.description == "") ? "" : ("description:" + this.description + " ")) +
")";
} , this)
};
Но свойство mydunamicfield
не создает правильный конкатенированный результат. Если я попытаюсь ссылаться на this.description()
внутри другой функции, я вижу следующее сообщение об ошибке при загрузке страницы:
Property 'description' of object [object Window] is not a function
В чем проблема в этом случае?
Ответы
Ответ 1
Во-первых, вы должны указать this.description
как this.description()
, если хотите получить его значение.
Во-вторых, попробуйте помещать ваше поле computed
вне вашего viewModel
(поскольку 'this'
, который является viewModel
сам, не определен в точке, в которой вы создаете наблюдаемый computed
.
См. http://jsfiddle.net/rAEqK/2/ для рабочего примера.