Message from JavaScript discussions
November 2016
— This would add a lot of code :c
Right now I do this
var newData = Object.assign(view.viewDataTemplate, view.viewData, pageData);
var isNewData = false;
for (var i = 0; i < view.viewDataKeysCount; i++) {
if (view.viewData[view.viewDataKeys[i]] !== newData[view.viewDataKeys[i]] || force) {
view.viewData[view.viewDataKeys[i]] = newData[view.viewDataKeys[i]];
isNewData = true;
}
}
— pageData
is fresh data from the store
— viewData
is the old data stored inside the component
— So this code uses a template and it's accessors to only diff data that is relevant to the component
— If exist new data refres all view
— Not spesific part
— I thought each component checked the data
— I suppose I should say "child views" not components
— Here is an example
—
var viewDomain = controllerViewFactory("FileBrowser", [
viewFactory(
{
sort: ""
},
procedures.renderFileBrowser
),
viewFactory(
{
itemEntryContainer: {}
},
procedures.renderFileList
),
viewFactory(
{
navObjects: {}
},
procedures.renderNavBar
),
viewFactory(
{
folderList: {}
},
procedures.renderSidebar
)
]);
— Good look