推送json以淘汰observable数组
push json to knockout observable array
我有一些可观察的单选按钮,根据值的不同,我想触发一个GETXON-方法来返回我的数据,然后将其推送到我显示为列表的可观察数组中。我得到的错误是无法读取未定义的属性"push"。这是我的Fiddle
单击单选按钮触发getjson方法后,如何将此数据获取到我的可观察数组?
self.currentAnswer = ko.observable();
self.recipientList = ko.observableArray([]);
self.currentAnswer.subscribe(function (newValue) {
if (newValue == 'Internal') {
$.getJSON('GetInfo', function (data) {
var result = $.parseJSON(data);
self.recipientList.push(result);
});
需要考虑的事项:
$.getJSON()
将为您解析JSON,您永远不需要自己解析。$.get()
也是如此(*)- 击倒可观察性是函数。您可以将它们用作回调(**)
有了这些知识:
self.recipientList = ko.observableArray();
self.currentAnswer = ko.observable();
self.currentAnswer.subscribe(function (newValue) {
if (newValue == 'Internal') {
$.get('GetInfo').done(self.recipientList);
}
});
(*)如果在成功回调中没有得到解析的JSON,请修复响应的Content-Type
标头。
(**)如果您调用一个observable并传递一个值作为第一个参数,它将存储该值。巧合的是,jQuery调用Ajax成功回调,并将返回的值作为第一个参数传递。完美贴合。
我更新了您的Fiddle,使其正常工作。基本上你需要调用self.recipientList.push.apply(self.recipientList, result);
https://jsfiddle.net/jsw1ezut/9/
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- 推送json以淘汰observable数组
- 剔除observable数组中的observable阵列,添加remove方法
- 在knockout.js中创建observable的动态数组
- 清除observable数组中的observable而不更新
- KnockoutJS+KoGrid-observable数组作为ko的子项.observable(object)不会触发
- 不能正确绑定observable的数组
- 如何将knockout's的Observable数组长度绑定到一个html元素
- 如何在knockoutjs中更新observable数组元素