【问题标题】:ng-include onload not working anymore in angularjs 1.2.0 rcng-include onload 在 angularjs 1.2.0 rc 中不再工作
【发布时间】:2013-10-24 20:34:05
【问题描述】:

我正在像这样使用 Angular 的 ng-include:

主要的html:

<span ng-include="'tpl.html'" ng-controller="TplCtrl" onload="loadMe()"></span>

模板tpl.html:

<h2>{{ tplMessage }}</h2>

控制器:

$scope.loadMe = function () {
        $scope.tplMessage =  'template';
    }
})

这在 angularjs 1.1.5 中运行良好,但在 1.2.0 rc 3 中不再运行

这是一个 plunkr : http://plnkr.co/edit/zYRevS?p=preview

知道如何使用 1.2.0 进行这项工作吗?

编辑: 我看到了这个:https://github.com/angular/angular.js/issues/3584#issuecomment-25279350 但在这里找不到这个问题的答案。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    因为它刚刚坏了,目前没有解决方法。

    根据change long

    "以前 ngInclude 只更新了它的内容,这次改变之后 ngInclude 会在每次包含新内容时重新创建。这确保了所有包含内容的单个 rootElement 始终存在,这使得动画的 css 样式的定义更加容易。”

    但它并没有得到改进,而是似乎已经被破坏了。

    根据 cmets here,当前实现已损坏。
    其他来源也会告诉你同样的情况。

    【讨论】:

    • 好的……那么我应该如何更新我的代码以使其与 1.2.0 一起使用?
    • @desgnl 公平地说,你的问题是“知道为什么吗?”
    【解决方案2】:

    好的,我在这里找到了答案:https://github.com/angular/angular.js/issues/3584#issuecomment-25857079

    ng-include 不能与 ng-controller 位于同一元素上。在 1.1.5 中,它正在工作

    这是一个工作更新的 plunker,其中包含一个包装 ng-include 的 html 元素: http://plnkr.co/edit/CB8jec?p=preview

    【讨论】:

      【解决方案3】:

      这似乎与您在同一个标​​签上混合了 2 个东西有关 - 它同时具有 ng-include 和 ng-controller。将您的跨度放入一个新的跨度并将 ng-controller 移动到外部标记。

      他们可能会改变处理这些属性的顺序。一般来说,我认为将它们混合在同一个标​​签上并不是一个好主意。

      【讨论】:

      • 我们同时回答了同样的问题 :-)。是的,这就是原因(在我下面的答案中有一个指向 plunker 和工作解决方案的链接)
      猜你喜欢
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 2014-01-22
      相关资源
      最近更新 更多