$ scope。$ apply和ng-include

时间:2014-06-29 04:49:19

标签: node.js angularjs

我使用$ scope。$ apply触发视图根据范围中已更改的变量进行更新。但是,我在html中有另一行是ng-include,

<div data-ng-include data-ng-src="'views/partials/_menubar.html'"></div>

error message

当我删除ng-include并用静态调用替换它时,没有错误。这是我所包含的模板:

<div class="menu" ng-controller="MenuController">
    <div style="display: inline-block">
        Hello!
    </div>
    <ul class="menu_dropdown">
        <li class="menu_item">Test1</li>
        <li class="menu_item">Test2</li>
        <li class="menu_item">Test3</li>
    </ul>       
</div>

菜单控制器的代码是

app.controller('MenuController', function($scope) {
});

2 个答案:

答案 0 :(得分:0)

ng-src用于允许通常具有src(如锚点或图像)的元素仅在角度消化后应用src标记,而不是在ng-include中包含模板。请参阅ng-include文档和ng-src文档。

使用ng-include指定src的安全方法如下:

<div data-ng-include="src='views/partials/_menubar.html'"></div>

<div data-ng-include="'views/partials/_menubar.html'"></div>

如果你必须分别拥有src,那就是data-src而不是data-ng-src

<div data-ng-include data-src="'views/partials/_menubar.html'"></div>

请参阅plnkr

编辑:要解决您的错误消息..如果您将一个函数绑定到每次调用它时更改的范围,您将看到该消息。

例如,这会导致这样的错误:

// controller
$scope.getQuote = function(){
    return 'someViewName' + Math.ceil(Math.random() * 10) + '.html';
};

// view
<div data-ng-include="{{getQuote}}"></div>

答案 1 :(得分:0)

ng-include的问题实际上是一个红鲱鱼。真正的问题是尝试更改window.history,如线程here中所示。我的猜测是因为ng-include指令在尝试获取资源时引用了$ location。