javascript - 将数据绑定(bind)到 View 中——是将数据从父 View 向下传递到子/孙 View 还是在创建 View 时初始化/查询数据更好?

标签 javascript backbone.js binding frontend marionette

我正在从事 Backbone/Marionette 项目。该项目实现了一种在从服务器加载数据后将数据缓存在本地内存中的方法。因此,可以在项目内随时随地访问数据。

这让我想知道在我的案例中填充数据以查看的更好方法是什么:

const ChildView = marionette.View.extend({/*...*/});

const ParentView = marionette.View.extend({
  // ...
  onRender() {

    // 1: pass data to child view from parent view
    const childView = new ChildView({
      data: this.options.data,
    }));

    // 2: initialize data when creating new child view
    const childView = new ChildView({
      data: SomeModel.new({/* some properties */}),
    }));
  },
  // ...
});

new ParentView({
    data: SomeModel.new({/* some properties */}),
}).render();

这两种方法都可以正常工作。然而,项目 View 结构非常深且复杂,所以我更喜欢第二种方式,因为对于第一种方式,我需要上下多次检查 data 是什么以及它来自哪里。

你觉得这个方法会不会有什么可能的问题?

最佳答案

我更喜欢第一种方式,将数据从父级传递给子级,但这取决于您的 View 在做什么。

对我来说,共享数据对象的一大优势是在一个 View 中更新它会在所有其他 View 中更新它(如果您传递现有的 Backbone 模型或任何对象作为数据,这将起作用>).这可以节省很多工作...当用户更新他们的背景颜色时(例如),您可以在 BackgroundColorChoose View 中更新它一次,并且知道它已在其他任何使用数据的地方更新。

从某种意义上说,数据来自何处并不重要,重要的是它代表什么(因为它可以从您的任何 View 中访问/修改)。

我可以想象这种方法不好的场景,但我发现它是一个很好的起点(并且避免了信任浏览器缓存的需要)

关于javascript - 将数据绑定(bind)到 View 中——是将数据从父 View 向下传递到子/孙 View 还是在创建 View 时初始化/查询数据更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47436548/

相关文章:

css - Angular 2动态样式绑定(bind)

javascript - 来自 Backbone.Marionette 的 MarionetteJS 示例。温和的介绍不起作用

javascript - Collection.get 在 backbone.js 中返回未定义

javascript - 在另一个模板中为模板 <script type="text/template></script> 添加下划线

wpf - MVVM:将 ListView.SelectedItem.Property 绑定(bind)到 VM 属性

c# - 找不到绑定(bind)源

javascript - 使用 capybara/selenium 访问 javascript 文件中的函数

javascript - 未捕获的类型错误 : Cannot read property 'style' of null?

javascript - 根据其值过滤 JavaScript 深度嵌套的对象数组

javascript - 我单击时选择了多个元素,现在我只想要其中一个(单击功能类似于浏览器中的检查器)