Javascript 敲除可观察数组未更新从数组中删除元素的视图
这是我的视图模型代码Javascript 敲除可观察数组未更新从数组中删除元素的视图,javascript,arrays,knockout.js,Javascript,Arrays,Knockout.js,这是我的视图模型代码 var TopicsViewModel = function() { var self = this; var fakeTopicData = [ ]; self.createProfile = function () { alert("came to create profile"); }; self.editProfile = function () { alert("came to edit profile"); }; self.rem
var TopicsViewModel = function() {
var self = this;
var fakeTopicData =
[
];
self.createProfile = function () {
alert("came to create profile");
};
self.editProfile = function () {
alert("came to edit profile");
};
self.removeProfile = function (profile) {
alert("came to remove profile");
fakeTopicData.pop();
self.topicsArr(fakeTopicData);
};
var refresh = function() {
self.topicsArr = fakeTopicData;
};
self.topicsArr = ko.observableArray([]);
refresh();
};
ko.applyBindings(new TopicsViewModel());
以下是我的视图html:
<hr />
<hr />
<table class="table table-striped table-bordered table-condensed">
<tr >
<th>Area</th>
<th>Name</th>
<th>Link</th>
<th>Description</th>
<th>Why</th>
</tr>
<tbody data-bind="foreach : topicsArr">
<tr>
<td data-bind="text :area"> </td>
<td class=""><a data-bind="text:name, click:$parent.editProfile"></a></td>
<td data-bind="text:link"> </td>
<td data-bind="text:desc"> </td>
<td data-bind="text:why" ></td>
<td><button class="btn btn-mini btn-danger" data-bind="click:$parent.removeProfile">remove</button></td>
</tr>
</tbody>
</table>
<script src="~/Scripts/Topic.js"></script>
地区
名称
链接
描述
为什么?
去除
该视图最初显示my fakeData数组中的所有主题。
单击“删除”按钮时,我试图从数组中删除一个元素,希望视图刷新,不再显示删除的项。但是,视图仍然显示所有3个主题
有人能指出我可能做错了什么吗。
我花了很长时间研究stackoverflow上的其他类似查询,但我仍然被卡住了。非常感谢您对这个问题的深入了解。您正在用一个在刷新方法中不可见的数组替换名为topicsarr的可观察数组 改变
var refresh = function() {
self.topicsArr = fakeTopicData;
};
到
您正在将名为topicsarr的可观察数组替换为刷新方法中不可观察的数组 改变
var refresh = function() {
self.topicsArr = fakeTopicData;
};
到
您的代码中有两个问题。
首先,您要在
刷新
功能中使用非可观察阵列或普通阵列设置可观察阵列主题阵列
。使用self.topicsArr(fakeTopicData)
Second,在函数removeProfile
中,您正在使用pop()
删除profile
元素。来自KnockoutJS文档:
myObservableArray.pop()从数组中删除最后一个值并
归还
因此,最好使用remove(item)
并将您的profile
元素传递给它,或在数组中循环并移除该特定项
myObservableArray.remove(someItem)删除所有相等的值
someItem并将其作为数组返回
您的代码中有两个问题。
首先,您要在
刷新
功能中使用非可观察阵列或普通阵列设置可观察阵列主题阵列
。使用self.topicsArr(fakeTopicData)
Second,在函数removeProfile
中,您正在使用pop()
删除profile
元素。来自KnockoutJS文档:
myObservableArray.pop()从数组中删除最后一个值并
归还
因此,最好使用remove(item)
并将您的profile
元素传递给它,或在数组中循环并移除该特定项
myObservableArray.remove(someItem)删除所有相等的值
someItem并将其作为数组返回
非常感谢!!我一直盯着我的代码看,但没听清楚。这解决了我的问题,我的视图现在随着数组的更改而刷新。非常感谢!!我一直盯着我的代码看,但没听清楚。这解决了我的问题,我的视图现在随着数组的更改而刷新。非常感谢。您所提到的确实是问题所在,在做出您建议的更改后,它现在起作用了。@RekhaJayaram欢迎您。如果我的代码运行良好,请您将其标记为应答。非常感谢。您所提到的确实是问题所在,在做出您建议的更改后,它现在起作用了。@RekhaJayaram欢迎您。如果我的代码运行良好,请您将其标记为答案