如何在meanJS-AngularJS中一起使用ngRepeat和ngShow / ngIf

时间:2015-01-04 11:15:52

标签: angularjs meanjs

我试图将ngRepeat与ngIf或ngShow一起使用。它只是不会工作..我试图只显示那些匹配"海报"和"观众" id所以用户只能看到他/她自己的帖子。我使用meanJS。我正在研究指令,因为我不知道那是不是我的遗失。

<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 extraSpaceList text-center" data-ng-repeat="motor in motorsCtrl.motors | filter:searchText | filter:searchFilter">
        <div ng-if="((authentication.user) && (authentication.user._id == motor.user._id))">
        <a class="list-group-item" ng-click="motorsCtrl.modalUpdate('lg', motor)">
            <div class="bg-info">
                <h4 class="list-group-item-heading" data-ng-bind="motor.title"></h4>
            </div>
        </a>
        </div>
    </div>

1 个答案:

答案 0 :(得分:1)

要研究几件事。

第一:

如果您使用ng-ifng-if将创建自己的范围。除非您使用ng-if服务,否则无法从$parent内访问父作用域模型。因此,您需要更改模型:motorsCtrl.modalUpdate('lg', motor)变为$parent.modalUpdate('lg', motor)motor.title变为$parent.motor.title

第二

您应该在这里开始使用ng-show代替ng-if。至少在您的应用呈现视图之前。但请调查一下。

您可能需要考虑以下内容(摘自@markovuksanovic):

ng-if将从DOM中删除元素。这意味着所有处理程序或附加到这些元素的任何其他内容都将丢失。例如,如果将单击处理程序绑定到其中一个子元素,当ng-if计算结果为false时,该元素将从DOM中删除,并且您的单击处理程序将不再起作用,即使在{{1稍后评估为true并显示元素。您需要重新附加处理程序。 ng-show / ng-hide不会从DOM中删除元素。它使用CSS样式来隐藏/显示元素(注意:您可能需要添加自己的类)。这样,附在孩子身上的处理程序就不会丢失。 {-1}}创建子范围,而ng-show / ng-hide不