Knockout JS - 从服务器获取数据并重新绑定 - 前端性能问题

时间:2017-06-09 18:35:43

标签: javascript knockout.js data-binding

我有一个演示application,其中我有一个数组,其中所有元素都是可观察的。在这个应用程序中,我有一个模拟来自服务器的调用的函数 - 获取绑定到列表的相同数组,但更改了一个项目。这是我实施它的方式:

this.serverDataSimulation=function(){
   aArray[Math.floor((Math.random() * 10) + 0)].name=Math.floor((Math.random() 
* 2000) + 1000);
    ko.mapping.fromJS(aArray, this.allItems);
}

aArray是模拟从服务器获取的数据,我使用ko.mapping将其绑定到列表。问题是这样整个列表被重新渲染,而不是只更新一个项目。我仍然希望在重新绑定之后以及重新绑定之前,数组的所有元素都是可观察的。有没有办法解决这个或更好的实现?

1 个答案:

答案 0 :(得分:0)

试试这个:

function onOpen() {
    DocumentApp.getUi()
    .createMenu("Menu ")
    .addItem("Insert Image","getMyImage")
    .addToUi()  
    }

function getMyImage() {
var doc = DocumentApp.getActiveDocument();

var body = doc.getBody();

var table = body.getTables();

for (var i = 0; i < table.length; i++){
    var imageId = table[i].getChild(0).asText().getText();

    if (imageId.length == 28) {

    var file = DriveApp.getFileById(imageId);

    var image = file.getBlob();

    var link = file.getUrl();

    var appendImage = table[i].getChild(0).asTableRow().clear().appendTableCell().appendImage(image)
    .setHeight(400).setWidth(500).setLinkUrl(link);


  }}}

http://jsfiddle.net/Jorgelig/GSvnh/5897/