【问题标题】:How can I pass parameters into an Angular $resource factory?如何将参数传递到 Angular $resource 工厂?
【发布时间】:2013-03-26 20:28:38
【问题描述】:

我试图在我的 $resource Venue 对象中使用 $scope.lat 和 $scope.lng,这样 REST 通信将始终在某个位置的上下文中。在 HenriettaCtrl 中定义它们之前,我无法判断它们是否在 $rootScope 下被传递,或者它们是否甚至被传递:

henriettaApp = angular.module('henriettaApp', ["ngResource"])

henriettaApp.factory "Venue", ["$resource", "$rootScope", ($resource, $rootScope) ->
  console.log($rootScope.lat)
  console.log($rootScope.lng)
  $resource("/venuesNear/:id",{lat:$rootScope.lat,lng:$rootScope.lng,id:"@id"}, {update: {method:"PUT"}})
]

@HenriettaCtrl = ["$scope", "Venue", ($scope, Venue) ->
  saveLocation = (position) ->
    $scope.lat = position.coords.latitude
    $scope.lng = position.coords.longitude
    console.log($scope.lat)
    $scope.streams = Venue.query()
  navigator.geolocation.getCurrentPosition saveLocation
]

【问题讨论】:

  • 最好创建一个 service 来创建 position 对象,然后您可以将其作为依赖项传递给您的 Venue servicecontroller

标签: angularjs coffeescript


【解决方案1】:

$rootScope 将向下传播到 $scope,但在 $scope 上设置的属性不会传播到 $rootScope。

你可能需要使用事件来获得你想要的结果,比如这个问题的公认答案:AngularJS multiple uses of Controller and rootScope

【讨论】:

    猜你喜欢
    • 2019-08-20
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2018-03-07
    • 2016-01-13
    • 2018-06-09
    • 2012-08-29
    • 2022-01-12
    相关资源
    最近更新 更多