【发布时间】:2015-04-12 13:59:08
【问题描述】:
我在尝试使用剔除绑定到选择时遇到了一些问题。
我尝试绑定的数据看起来像
{
"SomeProperty": 1,
"Attributes": [
{
"name": "EmailId",
"value": "1111"
},
{
"name": "Something",
"value": "223"
},
{
"name": "SomethingElse",
"value": "19999"
},
{
"name": "IsActive",
"value": true
}
],
}
我的选择正确绑定到数据源,并且我得到了正确填充的选项
<select class="form-control"
data-bind="options: $root.types,
optionsText: 'Key',
optionsValue: 'Value',
// value:1111,
value: $root.helperText($data.Attributes(), 'EmailId'),
optionsCaption: 'Please Select...'">
</select>
最后我的助手尝试设置选定的值看起来像
self.helperText = ko.computed({
read: function(attributesToSearch, idToSearchBy) {
debugger
return "";
},
write: function(attributesToSearch, idToSearchBy){
if (attributesToSearch != undefined) {
debugger
$.grep(attributesToSearch, function(e) {
if (e.name() == idToSearchBy) {
return e.value();
}
return null;
});
}
}
});
现在我没有遇到任何问题,代码逻辑似乎可以正常工作,但是没有返回任何值。
我试过了
<span data-bind="value:$root.helperText($data.Attributes(), 'EmailId')"></span>
但是两者都没有返回任何东西,我在这里做错了什么愚蠢的错误吗?
任何帮助都会非常有帮助
【问题讨论】:
-
您能帮我们解决您的问题吗?我在这里没有得到的一件事是为什么您的值绑定就像下拉菜单一样,您不能简单地捕获选定的值,即
value:$data.someobservable -
你不能像这样使用
computed。read函数应该是一个没有参数的函数,write函数应该是一个只有一个参数(新值)的函数。查看this part of the docs。 -
无论如何,为了能够帮助你,我必须第二个@supercool:我们需要一个repro,或者至少是你的视图模型的代码。最好创建一个 Stack Snippet(它在编辑器工具栏上)来重现您的场景。
标签: knockout.js