骨干-对同一集合使用不同的视图或模板

盖亚洛尼

我的应用程序的基本模型具有一个status属性。为了简单起见,假设状态可能是待定已删除

我有一个带有这两个状态值的上层菜单,当您单击其中的一个时,您会看到所有具有此状态的对象(我使用路由器来触发过滤器)。

我的问题是我需要为每种状态绘制一个不同的模板。

  • 删除的对象具有永久删除恢复按钮
  • 待处理的对象具有删除编辑和其他一些按钮(还有一些textarea ...)

我想知道什么是解决此问题的最佳解决方案。
我曾想为每种状态创建一个不同的视图,但是后来我不知道如何在集合级别处理它。
我还考虑过创建不同的模板,并在模型视图级别进行处理,但是,再次-我不知道这是否可能,如果可以的话-怎么做。

最后,我可以使用相同的模板和视图来解决它,将视图内不必要的东西隐藏起来,但是从我的角度来看,代码变得非常难看。

想法??谢谢!

里达·本汉曼(Rida BENHAMMANE)

如果要为每种状态创建不同的视图,请按以下方式进行操作:

Router {

    clickDeletedMenu : {

        var collection = new MyCollection();
        var deletedView = new DeletedView({ model : collection });

        collection.fetch({ status : 'deleted' }); // filter deleted objects
    },

    clickPendingMenu : {

        var collection = new MyCollection();
        var pendingView = new PendingView({ model : collection });

        collection.fetch({ status : 'pending' }); // filter deleted objects
    },

}

如果要创建差异模板,请按以下方式进行操作:

View {

    render : {

        if (this.model.status == 'deleted') {
            // render deleted template
        } else {
            // render pending template
        }
    }
}

最后,以我的观点,您可以使用相同的模板和视图,并隐藏模板而不是视图中不必要的内容。

nb:该代码仅用于说明想法,不会执行:)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章