用户个人资料AngularJS中的公共和私人个人资料用户设计模式

时间:2015-11-28 16:50:56

标签: angularjs design-patterns router user-profile

在我正在构建的平台中,有用户可以关注或取消关注。此外,如果您正在查看自己的个人资料,则可以对其进行编辑(而不是关注它)。

目前,我有一个州/ profile /:id,用于渲染具有angularjs的用户配置文件

我有一个模板_profile.html和一个控制器profileCrtl。控制器负责检查配置文件是否经过身份验证,因此设置不同的变量以显示不同的HTML标记。例如,如果用户看到自己的个人资料,我们将不会显示以下按钮。相反,他/她将看到一个编辑按钮,允许用户编辑他/她的个人资料。

这种方法的问题是porfileCtrl和_profile.html负责 管理公共配置文件用户视图和私有配置文件视图,我认为这不是一个好的设计模式。

我正在考虑改进代码的三种解决方案:

  1. 要使用两个模板,_ publicProfile和_privateProfile,只保留一个控制器profileCtrl。我们将有两个州。

  2. 使用两个模板,_ publicProfile和_privateProfile并拥有两个控制器。 profilePublicCtrl和profilePrivateCtrl。 (我觉得这可能是最好的解决方案)。我们将有两个州。

  3. 如果用户是经过身份验证的用户或公共用户,则只有一个状态并动态更改templateUrl。

  4. 您认为最佳解决方案是什么?你有上述考虑的替代方案吗?我应该在何时以及在哪里检查用户正在查看的个人资料是公共个人资料还是用户的个人资料?

    我已经在网上查了很多答案,似乎有很多意见,我觉得很难知道什么是最好的设计模式。

1 个答案:

答案 0 :(得分:1)

我面临与我的应用程序相同的问题,我最好的方法是为两个视图使用不同的模板和单独的控制器。 在此解释所有情景 -

1)您可以使用第一种方法使用相同控制器的不同模板,但我不喜欢这样,总是尝试为您的模板提供专用控制器。
2)使用具有专用视图的不同控制器是最佳方法。在这种情况下,您将完全控制在公共资料中显示哪些数据以及在私人资料中显示的内容 - 但是这种方法的问题是,在模板上你会得到很多重复的代码 3)如果您可以在个人资料模板中妥善管理,这也很不错。您需要每次都根据用户输入管理条件。

或者您可以创建一个单独的指令,该指令将采用一些参数并管理该指令中的所有公共/私有条件。在单个代码中,您将获得可重复使用的用户配置文件,您可以在任何想要显示用户配置文件的地方使用该指令。