Javascript Knockout.js - 如何在计算出的 observable 中获取 observable 属性的值?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11045029/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Knockout.js - how do I get the value of an observable property inside a computed observable?
提问by Arbejdsgl?de
I have following Knockout.js object:
我有以下 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)
};
But the mydunamicfield
property isn't producing the the correct concatenated result. If I try to reference this.description()
inside another function, I see the following error message when the page is loading:
但是该mydunamicfield
属性没有产生正确的连接结果。如果我尝试this.description()
在另一个函数内部进行引用,则在加载页面时会看到以下错误消息:
Property 'description' of object [object Window] is not a function
What is the problem in this case?
在这种情况下有什么问题?
回答by Mark Robinson
Firstly, you must reference this.description
as this.description()
if you want to get its value.
首先,您必须this.description
像this.description()
要获取其值一样进行引用。
Secondly, try putting your computed
field outside your viewModel
(as 'this'
which is the viewModel
itself isn't defined at the point you create the computed
observable.
其次,可以尝试在你的computed
领域你之外viewModel
(因为'this'
这是viewModel
本身不是在点定义创建computed
观测。
See http://jsfiddle.net/rAEqK/2/for a working example.
有关工作示例,请参阅http://jsfiddle.net/rAEqK/2/。