加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – ng-include – 多次调用Controller

发布时间:2020-12-17 08:48:02 所属栏目:安全 来源:网络整理
导读:情况: 我试图在不需要任何路由的情况下包含部分ng-include.我只想动态地包含许多特定部分.这或多或少看起来像: div ng-controller="SomeController" //This controller defines a $scope.getPartial(id) ng-include src="getPartial(something.id)"/ng-inc
情况:

我试图在不需要任何路由的情况下包含部分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 "";
  }
  ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读