gpt4 book ai didi

mvvm - 无法调用未定义的方法 'push'

转载 作者:行者123 更新时间:2023-12-03 10:38:04 27 4
gpt4 key购买 nike

我已经在 fiddle 中正常工作了(我现在找不到),但是当我将它移到VS2012时,出现错误“无法调用未定义的方法'push'”。

在下面的代码中,createItemDiv()函数可以很好地工作并创建UI元素。在此之前的行showItem()调用this.visibleItem.push()引发错误。我最初在 fiddle 中对此有疑问,并添加了“this”来修复它。如果现在删除“this”,则会得到“未定义visibleItem”。

viewmodel.js

var dummyResults = [
{ //sample data is here }
]
var dummyItems = [
]

function VisibleItem(data) {
var self = this;
this.name = ko.observable(data.name);
this.type = ko.observable(data.type);
this.description = ko.observable("");
}

function SearchResult(data) {
var self = this;
this.name = ko.observable(data.name);
this.type = ko.observable(data.type);
}

var viewModel = {
searchResult: ko.observableArray(ko.utils.arrayMap(dummyResults, function (item) {
return new SearchResult(item);
})),
visibleItem: ko.observableArray(ko.utils.arrayMap(dummyItems, function (item) {
return new VisibleItem(item);
})),
showItem: function (item) {
this.visibleItem.push(item);
}
};


ko.applyBindings(viewModel);

site.js
$(document).on('click', '.result', function () {
var item = ko.dataFor(this);
viewModel.showItem(item); //add item to "visibleItems" viewmodel for management
createItemDiv(item); //ui function to show item on screen
});

最佳答案

试试这个 :

var viewModel = function() {
var self = this;
self.searchResult = ko.observableArray(ko.utils.arrayMap(dummyResults, function (item) {
return new SearchResult(item);
})),
self.visibleItem = ko.observableArray(ko.utils.arrayMap(dummyItems, function (item) {
return new VisibleItem(item);
})),
self.showItem = function (item) {
self.visibleItem.push(item);
}
};

关于mvvm - 无法调用未定义的方法 'push',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17124620/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com