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