0

对不起,如果我的标题没有意义,但这是我到目前为止所做的:

function createPostsArray(last) {
                var postArr = 
                    generate(
                        function () { 
                            return { 
                                postGroup: [], 
                                visible: computed(
                                            function (){ //return true if 
                                                         //postGroup is empty
                            } 
                        }, last)
                    .toArray();

                posts(postArr);

            }

基本上, postGroup[] 是空的,我想使用 CSS 显示一个“加载”屏幕。当 postGroup 获取一些元素时,自动可见应该变为 false。

稍后我将扩展这个计算函数以考虑另一个 observable,但这对我来说很棘手,因为 visible 取决于特定的 postGroup,即与之关联的 postGroup。

我怎样才能做到这一点?有人知道吗?

PS:Generate 是一个 linq.js 生成函数,Computed 是一个 ko.computed 函数

PS:阅读这些概念有什么好的参考资料?

4

1 回答 1

0

淘汰赛部分看起来像这样。postGroup 需要是一个 observableArray,因为您想观察数组本身。因为 visible 是一个 ko.computed ,所以只要 postGroup 中的元素数量发生变化,它就会运行它的函数。

extend({ throttle: 100 }) 不是必需的,但如果 postGroup 通过重复的 postGroup.push() 调用填充,它将有助于提高性能。它会导致计算出的 observable 延迟重新评估,直到它的依赖关系在指定的时间段内停止变化。http://knockoutjs.com/documentation/throttle-extender.html

return { 
    postGroup: ko.observableArray(), 
    visible: ko.computed(function() {
        return postGroup().length > 0;
    }).extend({ throttle: 100 })
} 
于 2012-09-20T00:31:39.420 回答