我有可观察的单选按钮,根据我想要触发GETJSON方法的值来返回我的数据,然后将其推送到我正在显示为列表的可观察数组。我得到的错误是 无法读取undefined属性'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);
});
答案 0 :(得分:1)
我更新了你的小提琴以便它可以工作。基本上你需要拨打self.recipientList.push.apply(self.recipientList, result);
答案 1 :(得分:1)
需要考虑的事项:
$.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成功回调,将返回值作为第一个参数传递。完美契合。