2013-03-14 52 views
0

在HTML选择的项目:观察到的()不更新选择按预期

<select id="Catagories_CategoryId" data-bind="options: CategoryServiceTypes, 
    optionsText: 'Name',       
    optionsCaption: 'Please select a Category...',           
    value: SelectedCategoryType"> 
</select> 

在代码示例下面我刚删除在网格中的项目,所以通过LoadServiceTypesFromSvc()

重新填充网格
obj.SelectedCategoryTypeHolder(obj.SelectedCategoryType()); //copy the old selected object 
pager.LoadServiceTypesFromSvc(); //repop 
ko.utils.arrayForEach(obj.CategoryServiceTypes(), function(data) {               
    if (data.CategoryId() == obj.SelectedCategoryTypeHolder().CategoryId()) { 
     obj.SelectedCategoryType(data); 
     alert('selected ' + obj.SelectedCategoryType().Name()); //shows the name of the item I'm aiming for 
    } 
}); 

LoadServiceTypesFromSvc()也重新填充选择。我想将selected selected值设置为数据刷新前的值。

即使警报确认obj.SelectedCategoryType()已设置为我想要设置的值 - 选择本身保持不变,并仍显示默认的“请选择...”第一项。

我错过了什么?

非常感谢

+0

做返回的每一项块()'? – 2013-03-14 19:49:00

+0

不,它是同步编辑:实际上我需要检查...好点! – 2013-03-14 20:00:51

+0

它是async($ .ajax()),但它都发生在request.done() – 2013-03-14 20:06:07

回答

1

运行ko.utils.arrayForEach(...)对你有你`.LoadServiceTypesFromSvc异步AJAX请求由LoadServiceTypesFromSvc()在中,.done功能

+0

+1感谢波波拉 – 2013-03-14 20:57:36