小编dad*_*ada的帖子

将值分配给由字符串名称动态确定的knockout observable

我有两个问题请:

我正在使用淘汰赛(我是KO noob sry)并且我想在点击事件中为特定的淘汰赛观察分配一个值,但这应该仅在点击事件本身确定(并且我将传递给的值) data-bind = click)...可以这样做吗...我可以在其名称(字符串值)上获取knockout observable变量,而不必知道哪个observable我将分配一个值预先?

并且,其次不那么重要,如果存在这样的函数ko.ObservableByName(stringName),可以以某种方式使用它并在页面加载时分配多个选择项的预选择.请问如何?

我试过这样做...我使用了data-bind ="click:loadData.bind($ data,' param1 ',' param2 ')"然后我就能得到那些param1param2字符串通过在我的knockout viewmodel中构造一个事件处理程序的值,该事件处理程序沿着以下行行:

self.loadData = function (src, dest) {
    //dest is 'param1', src is 'param2', both are stings
    if (src == 'param1')
       self.p1observable($('#' + dest).val());
    else
       self.p2observable($('#' + dest).val());
}
Run Code Online (Sandbox Code Playgroud)

我最大的问题是我必须用已经指定的p1/p2 observable构造函数并在其中进行硬编码,但实际上我想让param1和param2用作某些名称或引用的名称.我的observable,然后我可以随意传递(除了要分配的值,或者更好的另一个observable我想将值复制到第一个),因此我可以在点击中分配传入的值函数直接调用我选择的一个observable(并没有大量这样的小函数)......

也许我会以错误的方式去做?也许我根本不应该传递字符串值...也许我应该尝试传入一个可观察对象,但是如何在数据绑定中做到这一点,你只是编写myViewModel.myObservable或类似的东西吗?

variable-assignment observable knockout.js

8
推荐指数
1
解决办法
2万
查看次数

尝试使用JSON.NET和DataContractJsonSerializer反序列化JSON失败

请帮忙,我被困住了.我有一个WCF服务,返回这样的东西:

{
   "GetDataRESTResult":
     [
       {"Key1":100.0000,"Key2":1,"Key3":"Min"},
       {"Key1":100.0000,"Key2":2,"Key3":"Max"}
     ]
}
Run Code Online (Sandbox Code Playgroud)

我想反序列化它,但无论我使用什么(JSON.NET或DataContractJsonSerializer)我都会收到错误.使用DataContractJsonSerializer时,我使用的是以下代码:

byte[] data = Encoding.UTF8.GetBytes(e.Result);
MemoryStream memStream = new MemoryStream(data);
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<DataDC>));
List<DataDC> pricinglist = (List<DataDC>)serializer.ReadObject(memStream);
Run Code Online (Sandbox Code Playgroud)

其中DataDC是我从WCF REST服务的服务引用得到的数据契约我从中获取JSON数据,而我得到的错误是InvalidCastException ...

试图使用JSON.NET我得到另一个例外,但我仍然无法弄明白,有人可以帮忙吗?

编辑这是一个JSON.NET堆栈跟踪:

无法将当前JSON对象(例如{"name":"value"})反序列化为类型'System.Collections.Generic.List`1 [MyApp.MyServiceReference.DataDC]',因为该类型需要JSON数组(例如[1, 2,3])正确反序列化.要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是类似的集合类型可以从JSON对象反序列化的数组或List.JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化.路径'GetDataRESTResult',第1行,第23位.

.net c# json json.net datacontractserializer

1
推荐指数
1
解决办法
1万
查看次数