angularjs – ng-include – 多次调用Controller

前端之家收集整理的这篇文章主要介绍了angularjs – ng-include – 多次调用Controller前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
情况:

我试图在不需要任何路由的情况下包含部分ng-include.我只想动态地包含许多特定部分.这或多或少看起来像:

<div ng-controller="SomeController">
    //This controller defines a $scope.getPartial(id)
    <ng-include src="getPartial(something.id)"></ng-include>
</div>

它工作,部分包括在内.但是看着控制台,我可以看到控制器被多次调用,第一次被调用时,我得到了404

GET path/to/partials/undefined.html [HTTP/1.1 404 Not Found 162ms]

当包含第一次出现时,似乎没有定义something.id.

问题:

>如何在不创建新范围的情况下简单地包含部分内容
>如果那是不可能的,我怎么能确定,控制器只被调用一次?
>我怎样才能避免404

我是AngularJS的新手,因此可能会做出错误的假设或错过明显的事情,请赐教.

> ngInclude按定义创建一个新范围,因此您无法轻易绕过它.并且,由于嵌套的作用域相互继承,因此新创建的作用域将能够读取SomeController中的任何内容,因此您不应该对新作用域有任何问题.
> ngInclude的src属性将在每个$digest范围内重新评估,因此您无法阻止它重复调用控制器的方法.就此而言,您需要确保您的方法轻巧快速,并在给定相同输入的情况下返回相同的输出
>当id尚未定义时,您可以通过返回空字符串“”来避免初始404
$scope.getPartial = function(id){
  if(!id){
    return "";
  }
  ...
}

猜你在找的Angularjs相关文章