2016-11-05 69 views
0

我试图从响应数据更新observable数组。 我确定我错过了一些简单的东西,但是我找不到为什么它不起作用?Knockout js observableArray没有得到更新

function addWitness() { 
 

 
    $.post("AddWintess", { 
 
    Witnesses: [{ 
 
     LastName: "test1", 
 
     FirstName: "test1", 
 
     MiddleName: "test1" 
 
    }, { 
 
     LastName: "test2", 
 
     FirstName: "test2", 
 
     MiddleName: "test2" 
 
    }] 
 
    }, function(data) { 
 
    my.viewModel.allItems = ko.observableArray(data.Witnesses); 
 
    }); 
 
} 
 
var my = { 
 
    viewModel: new WitnessesModel() 
 
} 
 

 
function WitnessesModel() { 
 
    var self = this; 
 
    self.allItems = ko.observableArray([]); 
 
    self.test = ko.computed(function() { 
 
    var result = ""; 
 
    self.allItems().forEach(function(item) { 
 
     result += item + "; "; 
 
    }); 
 
    }); 
 
} 
 
ko.applyBindings(my.viewModel);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<ul data-bind="foreach: allItems"> 
 
    <li data-bind="text: FirstName"></li> 
 
</ul> 
 
<input type="button" class="btn btn-success" value="+" onclick="addWitness()" />

我设置的测试功能的断点,但它没有被解雇。

回答

0

试试这条线的my.viewModel.allItems(data.Witnesses);代替

my.viewModel.allItems = ko.observableArray(data.Witnesses);

+0

它的作品!谢谢! –