页面重新加载时,KO选项绑定保存值为默认值

时间:2014-11-12 11:44:55

标签: javascript knockout.js

您好我正在使用knockout来选择下拉栏以允许用户选择他们的位置。现在由于我的下拉工作方式,它刷新页面以为该项目引入正确的产品。

我想要的是当页面刷新以使他们选择的位置成为下拉列表中的默认值。但目前它又回到了optionCaption。

        <select id="SelectLocation" data-bind="options: OrgTitles, 
    optionsText: 'title', optionsCaption: 'Choose Centre...', 
value: StoreLocationSelected">
            </select>

以下是我刷新页面的JavaScript:

    StoreLocationSelected.subscribe(function () {
                        if (StoreLocationSelected() != undefined) {
                            var org = StoreLocationSelected().org;
                            var title = StoreLocationSelected().title;
                    window.location = window.location.protocol + "//" + 
window.location.host + org;
                        }

                    });

无论如何我可以解决这个问题吗?任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

如果您在进行选择后刷新整个页面,那么您做错了。只需创建一个ajax类型的请求来获取信息并使用返回的值更新现有页面,您就不应该重新加载整个页面。

有一种方法来获取数据并通过您的订阅来调用它:

    viewModel.getData = function (someId) {

        $.ajax({
            url: 'http://someurl/controller/getdata',
            dataType: 'json',
            data: {
                "Id": someId
            }               
        }).success(function (data) {
            viewModel.updateSomethingWithReturnedData(data);                
        });
    };

这将以异步方式完成,因此您无需刷新页面。一旦淘汰赛观察者通过viewModel.updateSomethingWithReturnedData(data);更改了价值,页面就会更新。