gpt4 book ai didi

knockout.js - 已完成可观察数组内对象的更新,但浏览器未发生更改

转载 作者:行者123 更新时间:2023-12-04 05:44:50 25 4
gpt4 key购买 nike

我现在面临一个问题。我有一个包含对象列表的可观察数组。每当我更新任何数组对象的属性时。它不会反射(reflect)在浏览器上。我使用了所有 knockout 功能,如替换、删除。但是更新来自可观察数组,但不在浏览器中。

这是我的问题的示例:

 var ViewModel=new {
self=this;
self.List=ko.observableArray([]);
}
$(function(){
ko.applyBinding(ViewModel);
})
$.post('/url',{},function(data){
ViewModel.List(data); //data is list having 4 property having CommentList as again object-->id,title,description,CommentList--->commenttitle,commentdescription
})
//During change of property of commentList
$.post('/updateComment',{},function(obj){//Here obj-->obj.Commenttitle="some title",obj.commentdescription='some description'
//Let say there require update 4th object of List and 2nd property of CommentList
ViewModel.AnswerList()[4].CommentList.splice(2,1,obj);

})
//But nothing updation on browser

最佳答案

你说:

Whenever I updating property of any object of array it is not reflected on browser.



observable 数组中对象的属性也需要设置为 ko.observable使您的 UI 自动更新。

例如:
var anObservableArray = ko.observableArray([    
{ name: "A", type: "Type A" }
]);

// some later point
anObservableArray()[0].name = "B";

不是 将您的用户界面更新为 name不是可观察的。

然而,
var anObservableArray = ko.observableArray([    
{ name: ko.observable("A"), type: ko.observable("Type A") }
]);

// some later point
anObservableArray()[0].name("B");

..将更新您的用户界面以将名称 B 显示为 name是一个可观察的。

编辑:(在代码被添加到问题之后)

所以从你的代码你有:
 answer=GetAnswerFromViewModel(parentcourseItemID); 
answer.CommentCount--;
answer.CommentList.splice(CommentIndex,1);
answer.CommentText='';

假设 GetAnswerFromViewModel返回具有可观察属性的答案,您应该编写:
 answer=GetAnswerFromViewModel(parentcourseItemID); 
answer.CommentCount(answer.CommentCount()--);
answer.CommentList.splice(CommentIndex,1);
answer.CommentText('');

如果您的答案中的属性不是可观察的,那么您的 UI 将不会更新。

关于knockout.js - 已完成可观察数组内对象的更新,但浏览器未发生更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10813416/

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