我的代码如下:
Html:
<select
name="data3"
size="1"
id="data3"
data-bind="options: datalist, value: profile().dat.data()[2].Value()">
</select>
JavaScript:
$(function()
{
clientviewmodel = viewmodel();
ko.applyBindings(clientviewmodel);
});
function viewmodel()
{
var self = this;
self.profile = ko.observable(ko.mapping.fromJS($.parseJSON(datareceived)));
}
Json:
{ "dat": {"data": [{"Value":"1"}, {"Value":"2"}, {"Value":"3"} ] } }
My problem is, value is not binded on changing the select control.
3 回答
在绑定结束时,您还有一组额外的
()
.正确的绑定应如下所示:
演示JSFiddle .
编写
Value()
时,您不会绑定到您的可观察属性本身,而是绑定到它的单向绑定的基础值 .因为您已将
viewmodel()
编写为"classical"构造函数但未使用new
进行实例化,所以实际上将profile
设置为全局变量并且在调用它时不返回任何内容,因此实际上并未将绑定应用于VM .标准JavaScript实践是经典构造函数的名称,只有那些名称,应该以大写字母开头,以提醒您需要使用
new
实例化它们 .nemesv 's and Neil Thomspson'的意见也适用;您不应该在绑定中展开
value
,并且datalist
需要是您的VM的属性 .您的 Profiles JSON无效 .
你有
它应该是:
在这些情况下,JsonLint.com是一个有用的工具