初めてAngular 1.2.18を使用しています。Rails 3.2とcoffeescriptで使用しています。サービスでプロミスを使用してデータをフェッチし、それを使用してテンプレートに入力しようとしています。私のコードは次のようになります。
angular.module('myApp')
.service('fetchService', ['$http', '$q', ($http, $q) ->
theService = {}
theService.myData = null
theService.getData = (url) ->
q = $q.defer()
if this.myData
q.resolve(this.myData)
return q.promise
self = this
$http.get(url).then(
(successResonse)->
self.myData = successResponse
q.resolve(successResponse)
,(errorResponse)->
self.myData = errorResponse
q.reject(errorResponse)
)
return q.promise
return theService
])
.directive('myDirective', ["fetchService", fetchService)->
return {
restrict: "A"
templateUrl: "/my_template_url"
scope:
url: '@shopUrl'
offset: '@'
controller: ($scope, fetchService)->
fetchService.getData($scope.url).success( (data) ->
$scope.content = data.content
)
}
])
これを実行しようとすると、「未定義は関数ではありません」というメッセージが表示され、有用なスタック トレースが表示されません。どの部分が未定義なのかわかりません。config() でこれを行うことを考えましたが、 $http.get(url) の URL が実行時までわかりません。これを「角度のある方法」で行うためのヘルプやアドバイスをいただければ幸いです。