从多个不同的“主干/需求”视图中使用同一对象实例

sçuçu

我尝试编写两个视图登录视图并注册每个视图,每个渲染均使用从两个视图中的keyup dom事件收集的相同数据。与注册模板相比,登录模板具有更少的数据字段,因此模板变量更少。

因此,我想到了使用一个模型对这两个表单进行gui渲染,即表单数据模型。我试图将关注点分开,并对模块负责。现在,需要使表单数据模型成为一个视图的依存关系并在该视图中创建,并通过使前一个视图成为该另一视图的依存关系来从另一个视图中提及该实例。但是,此最后一个应该使用与它具有依赖关系的视图相同的实例。似乎只有一个视图和三个单独的模型可以构成数据,登录和注册以及两个不同的模板,这是一个解决方案。

这似乎令人惊讶。在面向对象的范式中,感觉到添加了一个小功能使其变得非常笨拙,这与面向对象的思想相冲突。所有这些功能都适用于当用户在登录视图中单击注册按钮时,注册视图将使用刚输入的数据进行渲染,反之亦然。

这种用法是从另一个视图/模型引用另一个视图/模型以使用其模型等,是对Backbone或Require的错误使用,而它们是要利用良好的开发实践,例如关注点分离,单一职责和模块化分离,还是对于那些良好的开发实践来说一点都不坏吗?

机器鬼

我不认为这是“错误的”每说有View1依靠View2,这样View1可以访问ModelView2创建...但我不认为这是次优的。我可以想到您可能要考虑的另外两种策略,这些策略可以避免您View1依赖View2

首先,你可以选择不创建ModelView2,而是只是填充View2...并创建自己的模块中预先它。换一种说法:

// theLoginData.js
define(['LoginData'], function(LoginData) {
    return new LoginData();
});

// View #2
define(['theLoginData'], function(theLoginData) {
    return Backbone.View.extend({
        someMethod: function() {
            theLoginData.set(whatever);
        }
    });
});

 // View #1
define(['theLoginData'], function(theLoginData) {
    return Backbone.View.extend({
        someOtherMethod: function() {
            var whatever = theLoginData.get('whatever');
        }
    });
});

另一个选择是仍然Model在View2中创建,但在更全局的范围内“注册”它(例如,作为Model用于登录数据的静态属性Model):

// LoginData.js (ie. the Model class for your login data)
define([], function() {
    return Backbone.Model.extend({}, {
        currentLoginData: null
    });
});


// View #2
define(['LoginData'], function(LoginData) {
    return Backbone.View.extend({
        someMethod: function() {
            LoginData.currentLoginData = new LoginData(whatever);
        }
    });
});

 // View #1
define(['LoginData'], function(LoginData) {
    return Backbone.View.extend({
        someOtherMethod: function() {
            var whatever = LoginData.currentLoginData.get('whatever');
        }
    });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EF保存同一对象的多个实例

来自分类Dev

添加同一对象的多个实例

来自分类Dev

使用sequelize,可以与同一对象的多个实例建立关联

来自分类Dev

如何在CodeIgniter中的多个挂钩中使用同一对象?

来自分类Dev

是否可以在多个文件中使用同一对象?

来自分类Dev

使用同一对象运行多个LINQ

来自分类Dev

从同一对象的不同实例中触发另一个实例的函数

来自分类Dev

为什么Borland在不同的C文件中使用同一对象的多个定义进行编译,而GCC却没有?

来自分类Dev

当子项是同一对象时,在树形视图中获取父项注释

来自分类Dev

是否可以在Openerp中显示同一对象的多个表单视图或树视图?

来自分类Dev

Django中使用一对多关系的同一对象内的多值属性

来自分类Dev

同一对象的类型和实例的不同属性列表?

来自分类Dev

如何在Android Room中加入同一对象的多个实例?

来自分类Dev

在python中同时生成同一对象的多个实例

来自分类Dev

PHP函数“ overloops”数组返回同一对象的多个实例

来自分类Dev

将同一对象的多个实例添加到阶段

来自分类Dev

创建同一对象的多个实例时,Java 是否复制方法实现?

来自分类Dev

在视图中使用多个集合的主干js

来自分类Dev

与其他对象参数在同一对象中使用的对象参数?

来自分类Dev

Linq合并来自同一对象实例的数组

来自分类Dev

在核心数据一对多关系中使同一对象具有多个时间

来自分类Dev

从Javascript的同一对象中使用setTimeout函数调用对象方法

来自分类Dev

将同一对象存储在不同的数组中

来自分类Dev

获取同一对象的不同JSON表示形式

来自分类Dev

同一对象的不同内存地址

来自分类Dev

同一对象在不同的类中?

来自分类Dev

同一对象的不同类型

来自分类Dev

将Flyway与可更改同一对象的多个功能分支一起使用

来自分类Dev

将Flyway与可更改同一对象的多个功能分支一起使用

Related 相关文章

  1. 1

    EF保存同一对象的多个实例

  2. 2

    添加同一对象的多个实例

  3. 3

    使用sequelize,可以与同一对象的多个实例建立关联

  4. 4

    如何在CodeIgniter中的多个挂钩中使用同一对象?

  5. 5

    是否可以在多个文件中使用同一对象?

  6. 6

    使用同一对象运行多个LINQ

  7. 7

    从同一对象的不同实例中触发另一个实例的函数

  8. 8

    为什么Borland在不同的C文件中使用同一对象的多个定义进行编译,而GCC却没有?

  9. 9

    当子项是同一对象时,在树形视图中获取父项注释

  10. 10

    是否可以在Openerp中显示同一对象的多个表单视图或树视图?

  11. 11

    Django中使用一对多关系的同一对象内的多值属性

  12. 12

    同一对象的类型和实例的不同属性列表?

  13. 13

    如何在Android Room中加入同一对象的多个实例?

  14. 14

    在python中同时生成同一对象的多个实例

  15. 15

    PHP函数“ overloops”数组返回同一对象的多个实例

  16. 16

    将同一对象的多个实例添加到阶段

  17. 17

    创建同一对象的多个实例时,Java 是否复制方法实现?

  18. 18

    在视图中使用多个集合的主干js

  19. 19

    与其他对象参数在同一对象中使用的对象参数?

  20. 20

    Linq合并来自同一对象实例的数组

  21. 21

    在核心数据一对多关系中使同一对象具有多个时间

  22. 22

    从Javascript的同一对象中使用setTimeout函数调用对象方法

  23. 23

    将同一对象存储在不同的数组中

  24. 24

    获取同一对象的不同JSON表示形式

  25. 25

    同一对象的不同内存地址

  26. 26

    同一对象在不同的类中?

  27. 27

    同一对象的不同类型

  28. 28

    将Flyway与可更改同一对象的多个功能分支一起使用

  29. 29

    将Flyway与可更改同一对象的多个功能分支一起使用

热门标签

归档