angularjs范围绑定和rootscope

时间:2013-05-29 22:03:56

标签: javascript angularjs angularjs-scope

我有一些我想要只展示文档作者的元素。

我可以这样做:

<div ui-show="currentUser == doc.user">Edit</div>
<div ui-show="currentUser == doc.user">Review</div>

这很好但是因为在我的生产代码中,ui-show比这个例子长得多,我不想将它复制并粘贴到我需要它的任何地方。

我想设置一个单独的变量,当用户登录或退出时,或者随着新/不同用户的文档更新,动态更新。

<div ui-show="isUser">Edit</div>
<div ui-show="isUser">Review</div>

2 个答案:

答案 0 :(得分:2)

我发现我可以将isUser变为函数。

<div ui-show="isUser()">Edit</div>
<div ui-show="isUser()">Review</div>

并在控制器中写下条件。

答案 1 :(得分:0)

您有几种方法可以解决此问题:

1)为您的应用程序引入“全局”或“父”控制器。这将包含您的isUser范围变量,您可以从此控制器下的任何控制器基本上设置该变量。这意味着您可以使用LogInController处理注销/输入,并可以通过$scope.isUser = false设置该变量。

这是一个小提琴,上面有一个示例:http://jsfiddle.net/digitalzebra/MrQrX/

2)根据用户是否登录/加载,加载不同的模板或包含。使用<ng-include src="partialTemplate">时,src属性实际上是一个表达式。因此,您可以根据该表达式的值切换实际加载的模板。然后,您可以在控制器中设置值并动态更改加载的模板:$scope.partialTemplate = "loggedOff.html"