2015-11-19 54 views
2

見下文。Mithril js,有沒有什麼好的方法m.request()循環和concat數組?

首先,腳本會從Github的API 4項,並呈現一個列表。如果您提交'NEXT'按鈕,則腳本在重新發送Get請求後重新繪製列表。

GET請求。

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 Array。

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

它正常工作。但是,這是不好的解決辦法,不是嗎?我認爲 這個concat過程應該在View-Model(repo.vm)中完成。

有什麼好方法嗎?或者這是好的嗎?

回答

1

修改view方法中的內容並不理想。考慮一個模板視圖,應該只顯示狀態,因爲重繪可以很快發生。相反,您應該讓控制器執行請求,並在請求完成時修改狀態。然後將顯示視圖。

代碼方面,我認爲你對「太多結構」有點深入。有觀看模型,一個LinkHeader原型,並且程序流程遍佈整個地方。心智模式非常簡單,所以保持這種方式,而不是進入只會使事情變得抽象和複雜的模式。

這是我對此採取:https://jsfiddle.net/ciscoheat/akwdqhpx/

解析器是相同的,但在那之後我一直試圖保持壓縮和本地代碼,這樣你就可以看代碼的一部分,瞭解它。這裏有一篇關於locality and cohesion的非常好的文章。我也改變了幾個名字以更接近心智模式。

相關問題