【发布时间】:2014-10-29 23:24:24
【问题描述】:
我有一个我写的控制器,我在我的应用程序的多个地方使用ng-include 和ng-repeat,像这样:
<div
ng-repeat="item in items"
ng-include="'item.html'"
ng-controller="ItemController"
></div>
在控制器/模板中,我希望存在item 值,并且整个事情都是围绕这个想法构建的。不过,现在我需要以稍微不同的方式使用控制器,没有ng-repeat,但仍然需要能够传入item。我看到ng-init 并认为它可以做我需要的,像这样:
<div
ng-init="item = leftItem"
ng-include="'item.html'"
ng-controller="ItemController"
></div>
<div
ng-init="item = rightItem"
ng-include="'item.html'"
ng-controller="ItemController"
></div>
但这似乎不起作用。任何人都知道如何在这样的单一实例中为范围传递变量?
编辑:
上面的控制器正在加载leftItem 和rightItem 值,如下所示:
.controller('MainController', function($scope, ItemModel) {
ItemModel.loadItems()
.then(function(items) {
$scope.$apply(function() {
$scope.leftItem = items.left;
$scope.rightItem = items.right;
});
});
});
【问题讨论】:
-
一个解决方案是创建一个新指令,正如我在 answer 中所说的那样
-
kbjr,请记住,ng-repeat 是一个创建新子作用域的指令,并且 ng-include 也是......除此之外,ng-init 可以与 ng- 结合使用包括...恐怕您必须显示控制器(ItemController 的代码)文件和模板文件(item.html)才能完全理解场景以及为什么不工作。
标签: javascript angularjs angularjs-ng-repeat angularjs-ng-include angularjs-ng-init