秘银js,m.request()循环和concat数组有什么好方法吗?

时间:2015-11-19 17:16:28

标签: javascript mithril.js

见下文。

首先,脚本从Github API获取4个项目并呈现列表。如果您提交“下一步”按钮,则脚本会在重新发送获取请求后重新绘制列表。

获取请求。

repo.Repo.getList = function (api) {
    return m.request({
        method: "GET",
        url: api,
        type: repo.Repo,
        extract: repo.linkHeader.setLinkHeader,
        initialValue: []
    })
        .then(function (data) {
        // bad solution.
        return repo.vm.list(repo.vm.list().concat(data));
    });
};

Concat数组。

repo.vm.api(links['next'])
return m('button', {onclick: repo.vm.add}, 'NEXT');

它的工作方式与预期一致。但是,这是不好的解决方案,不是吗?我认为 这个concat过程应该在View-Model(repo.vm)中完成。

有什么好方法吗?或者这样可以吗?

1 个答案:

答案 0 :(得分:1)

修改view方法中的内容并不理想。考虑视图模板,该模板应该只显示状态,因为重绘可以非常快速地发生。相反,您应该让控制器执行请求,并在请求完成时修改状态。然后将显示视图。

代码方面,我认为你已经深入了解了太多的结构"。有视图模型,LinkHeader原型,程序流遍布整个地方。心理模型非常简单,所以要保持这种方式,而不是进入只会使事情变得抽象和复杂的模式。

以下是我对此的看法:https://jsfiddle.net/ciscoheat/akwdqhpx/

解析器是相同的,但之后我尝试将代码保持压缩和本地化,因此您可以查看部分代码并理解它。这是一篇关于locality and cohesion的非常好的文章。我也改变了一些名字,以便更接近心理模型。