环境:
我有一个有角度的应用
我有一张地理位置表。它显示了名称和描述。
我想要的:
如果用户点击表格中的给定地理位置,我想要显示地理位置信息的小视图。该视图将包含更多信息。它将由与表不同的控制器控制。
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})"
答案 0 :(得分:2)
从中我看到, GeographyDetailController 是 GeographyController 的子控件。然后有几种方法可以传递参数。
您可以使用$ scope或$ rootScope事件。也就是说,当用户点击该行时,您会从 GeographyController 发出事件($scope.$emit
或$rootScope.$emit
),传递您的ID并调用$scope.$on
或{{1在 GeographyDetailController 中获取ID。
或者您可以这样做:当用户点击该行时,您在 GeographyController 内的$ scope($rootScope.$on
)中添加一个新字段并将其设置为这在 GeographyDetailController ($scope.myParam = id
)中。
就个人而言,我建议你使用第二种方法。