首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在计算可观测性中更新依赖可观测性

在计算可观测性中更新依赖可观测性
EN

Stack Overflow用户
提问于 2013-04-17 16:25:34
回答 1查看 97关注 0票数 0

我需要在ajax请求(异步ajax请求)后更新计算可观测值(过滤器),但计算可观测值(filterChanged)依赖于此可观测值(过滤器)当我在计算中更新可观测值时,在计算中发生无限循环?

如何在computed observable中更新依赖的可观测性?

代码语言:javascript
复制
function vm(){
    var self = this;
    self.filter = ko.observable();
    self.isOpenFilter = ko.observable(false);

    self.result = ko.obseravableArray([]);

    self.filterChanged = ko.computed(function(){
            var data = {filter:self.filter(),isOpen:self.isOpenFilter()}


        $.ajax("/service",data,function(response){
            self.result(ko.mappings.fromJS(response.results);
            self.filter(response.filter);   // infinite loop
                    self.isOpenFilter(response.isOpen);
        });
    });
}
EN

回答 1

Stack Overflow用户

发布于 2013-04-17 16:34:17

我不知道你为什么要用ko.computed。下面这样的代码更有意义:

代码语言:javascript
复制
function vm() {
    var self = this;
    self.filter = ko.observable("default filter");
    self.result = ko.observableArray([]);

    self.updateFilter = function() {
        var filter = self.filter();

        $.ajax("/service",
               {filter:filter},
               function(response){
                   self.result(ko.mappings.fromJS(response.results));
                   self.filter(response.filter);
               });
    };
}

如果您调用updateFilter从服务器获取更新,它将更改filter计算属性,如果您的视图绑定到该属性,它将自动更新。

有关示例,请参阅this jsfiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16055127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档