ngInclude在1.0.7中工作但在1.2.1中不起作用

时间:2013-11-20 19:49:21

标签: angularjs

工作版Angular 1.0.7 plunkr

不起作用的版本Angular 1.2.1 plunkr

在角度1.0.7中,以下ngInclude工作正常:

            <li class="dropdown" id="header_notification_bar" data-ng-include="" src="'notifications.tpl.html'" data-ng-controller="NotificationsCtrl"></li>

notifications.tp.html看起来像这样:

    <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
    <i class="icon-warning-sign"></i>
    <span class="badge">{{notifications.length}}</span>
</a>
<ul class="dropdown-menu extended notification">
    <li>
        <p>You have {{notifications.length}} new notifications</p>
    </li>
    <li>
            <ul class="dropdown-menu-list scroller" scroller style="height: 250px">
                <li data-ng-repeat="n in notifications" >
                    <a href="#">
                        <span class="label label-success"><i class="icon-plus"></i></span>
                        {{n.summary}}
                    <span class="time">{{n.time}}</span>
                    </a>
                </li>
            </ul>
    </li>
    <li class="external" >
        <a href="#">See all notifications <i class="m-icon-swapright"></i></a>
    </li>
</ul>

在Angular 1.2.1中,模板被加载但看起来视图没有绑定到控制器/范围。

如果您运行上面的2个plunkrs并单击感叹号,您将看到只有Angular 1.0.7显示通知项。

我已阅读here找到的“从1.0迁移到1.2”文档,但看不到任何相关内容。也许我错过了一些东西。

有人帮忙吗?

谢谢, 丹

1 个答案:

答案 0 :(得分:2)

它似乎是在将控制器传递给ng-include时所做的更改。正如@Sarah指出的那样,这可能是一个范围变化。

Here is a plunker正在发挥作用。

我将ng-controller移动到模板本身,它似乎再次起作用。但是必须将模板包装在div中(不太理想,我知道)。

<div data-ng-controller="NotificationsCtrl">

我还将模板src添加到ng-include,因为它有点清洁:

<li class="dropdown" id="header_notification_bar" data-ng-include="'notifications.tpl.html'"></li>

希望这有帮助。