ng-包含一个带有Controller的视图和一个来自另一个Controller的变量

时间:2017-10-30 20:23:14

标签: angularjs

环境:

我有一个有角度的应用

我有一张地理位置表。它显示了名称和描述。

我想要的:

如果用户点击表格中的给定地理位置,我想要显示地理位置信息的小视图。该视图将包含更多信息。它将由与表不同的控制器控制。

main.html中:

<div ng-if="displaySingle" ng-controller="GeographyController">
    <div ng-include="'html/geography-detail.html'" ng-controller="GeographyDetailController"></div>
</div>


<tr ng-repeat="geography in geographies" ng-controller="GeographyController">
    <td ng-click="displaySingleFunction(geography.id)">{{geography.name}}</td>
    <td>{{geography.description}}</td>
</tr>

这里的问题是当用户点击给定的行时,我需要将该行的id传递给GeographyDetailController。但该行的控制器位于GeographyController中。

问题:

如何制作这行代码:

<div ng-include="'html/geography-detail.html'" ng-controller="GeographyDetailController"></div>

将单个ID传递给GeographyDetailController

我有什么:

单击给定行可以使我的详细视图显示和消失,它只是无法向该视图及其控制器发送我需要它的ID。

更新1

如果我想关注该页面的链接,这是有效的,但我不想,我希望将此视图包含在更大的视图中。

ui-sref="geographyDetail({uuid:geography.uuid})" 

1 个答案:

答案 0 :(得分:2)

从中我看到, GeographyDetailController GeographyController 的子控件。然后有几种方法可以传递参数。

  1. 您可以使用$ scope或$ rootScope事件。也就是说,当用户点击该行时,您会从 GeographyController 发出事件($scope.$emit$rootScope.$emit),传递您的ID并调用$scope.$on或{{1在 GeographyDetailController 中获取ID。

  2. 或者您可以这样做:当用户点击该行时,您在 GeographyController 内的$ scope($rootScope.$on)中添加一个新字段并将其设置为这在 GeographyDetailController $scope.myParam = id)中。

  3. 就个人而言,我建议你使用第二种方法。