gpt4 book ai didi

angularjs - ng-include - Controller 被多次调用

转载 作者:行者123 更新时间:2023-12-04 12:09:25 25 4
gpt4 key购买 nike

情况 :

我试图包含一个部分 ng-include无需任何路由。我只想动态地包含许多的特定部分。这或多或少是这样的:

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

它有效,包括部分。但是看控制台我可以看到 Controller 被调用了几次,第一次被调用时,我得到了 404

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



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

问题 :
  • 我怎样才能简单地包含一个部分,而不创建一个新的范围?
  • 如果这是不可能的,我如何确保 Controller 只被调用一次?
  • 以及如何避免 404?

  • 我对 AngularJS 还很陌生,因此可能会对事物做出错误的假设或遗漏明显的事物,请赐教。

    最佳答案

  • ngInclude 根据定义创建一个新的作用域,因此您不能轻易绕过它。而且,由于嵌套作用域相互继承,您新创建的作用域将能够读取 SomeController 中的任何内容。 ,所以你不应该对新范围有任何问题。
  • ngInclude 的 src 属性将在每个 $digest 范围内重新评估,因此您无法阻止它重复调用 Controller 的方法。就此而言,您需要确保您的方法轻巧快速,并且在给定相同输入的情况下返回相同的输出
  • 当 id 尚未定义时,您可以通过返回空字符串 ""来避免初始 404:

  • $scope.getPartial = function(id){
    if(!id){
    return "";
    }
    ...
    }

    关于angularjs - ng-include - Controller 被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17167149/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com