【发布时间】:2017-05-28 04:02:36
【问题描述】:
事情是这样的:
<div ng-controller="controller1">
<div ng-controller="controller2" ng-init="controller2.someMethod(controller1.Data.someId)">
{{something}}
</div>
</div>
由于某种原因,我无法访问另一个控制器的 div 中的controller1.Data.someId,但我确实需要将此 ID 传递给另一个控制器的方法。
这怎么可能做到?
更新:
<div ng-controller="routesController as routesCtrl">
<div class="ps-top-space-1" ng-controller="routeController as routeCtrl" ng-init="loadFromRouteInfoScreen(routesCtrl.RoutesData.apiRouteInfoResponse)">
<ons-button modifier="large" ng-click="routeCtrl.addTickAndRouteRating()">Rate route or Add tick...</ons-button>
</div>
</div>
其中 routesCtrl.RoutesData.apiRouteInfoResponse 是在 routesController 中设置的,并且应该有一个带有 route_id 的数据对象。
我的方法loadFromRouteInfoScreen(route_id) 正在触发一些其他功能(以及console.log)。
【问题讨论】:
-
通过上面的设置,controller2 的 $scope 继承自 controller1 的 $scope。所以如果你在controller1中设置$scope.value = 7,那么你就可以从controller2 $scope.value中访问它。
-
创建一个服务来在控制器之间共享数据,它可能会在控制器中处理父/子关系时变得混乱。
-
事实证明,我唯一的问题是,如果我传递整个对象(controller1.Data.apiResponse),它将正确传递给方法,但我只需要“controller1.Data.apiResponse. data.someId" ,由于某种原因我无法获取...
-
您可以登录
controller1.Data.apiResponse并在您的问题中显示结构吗? -
是的,我看到了具有 id 属性的数据对象: abortDeferer Deferred { promise=Promise, resolve=function(), reject=function(), more...} data Object { route_id=139 , route_name="Fialová", route_build_date_iso="2015-01-12", 更多...} 错误
标签: javascript html angularjs scope ng-controller