3

我还没有构建一个实际的应用程序,但我正在尝试使用 Angular 来处理 HTTP 请求。

这是我的小(而且很糟糕)的 HTML 模板:

<div class="row-fluid" ng-controller="SearchCtrl">
    <div>zip: {{zip}}</div>
    <div>id: {{appid}}</div>
    <div>key: {{appkey}}</div>
    <div>JSON: {{jsonz}}</div>
</div>

这是此特定页面的控制器:

  controller('SearchCtrl', ['$scope','$routeParams',function($scope,$routeParams){
      $scope.appid = *;
      $scope.appkey = *;
      if($routeParams.zipcode) {
        $scope.zip = $routeParams.zipcode;
        $scope.jsonz = $resource('api/:act', {act:'search',appid:$scope.appId,appKey:$scope.appkey,zipCode:$scope.zip}).query();
      }
  }])

我假设该模块已正确初始化。

angular.module('myApp.controllers', ['ngResource'])

当 $resource 行未注释时,HTML 会按字面意思显示,Angular 不会替换模板。注释掉,zip/id/key 被正确替换。

我知道我可能在资源方面做错了,但我什至不知道我应该做什么。

upd:angular-resource.js 中似乎有一些未定义的值,我将尝试调查/重新下载 angularjs。

[15:44:57.157] Error: value is undefined
ResourceFactory/extractParams/<@file:///C:/demo/app/lib/angular/angular-resource.js:344
forEach@file:///C:/demo/app/lib/angular/angular.js:137
extractParams@file:///C:/demo/app/lib/angular/angular-resource.js:343
ResourceFactory/</Resource[name]@file:///C:/demo/app/lib/angular/angular-resource.js:398
@file:///C:/demo/app/js/controllers.js:79
invoke@file:///C:/demo/app/lib/angular/angular.js:2902
instantiate@file:///C:/demo/app/lib/angular/angular.js:2914
@file:///C:/demo/app/lib/angular/angular.js:4805
update@file:///C:/demo/app/lib/angular/angular.js:14198
Scope.prototype.$broadcast@file:///C:/demo/app/lib/angular/angular.js:8307
updateRoute/<@file:///C:/demo/app/lib/angular/angular.js:7463
qFactory/defer/deferred.promise.then/wrappedCallback@file:///C:/demo/app/lib/angular/angular.js:6846
qFactory/defer/deferred.promise.then/wrappedCallback@file:///C:/demo/app/lib/angular/angular.js:6846
qFactory/ref/<.then/<@file:///C:/demo/app/lib/angular/angular.js:6883
Scope.prototype.$eval@file:///C:/demo/app/lib/angular/angular.js:8057
Scope.prototype.$digest@file:///C:/demo/app/lib/angular/angular.js:7922
Scope.prototype.$apply@file:///C:/demo/app/lib/angular/angular.js:8143
done@file:///C:/demo/app/lib/angular/angular.js:9170
completeRequest@file:///C:/demo/app/lib/angular/angular.js:9333
createHttpBackend/</xhr.onreadystatechange@file:///C:/demo/app/lib/angular/angular.js:9304
4

1 回答 1

2

您必须在控制器中注入 $resource:

controller('SearchCtrl', ['$scope', '$routeParams', '$resource', 
function($scope, $routeParams, $resource){ ...
于 2013-06-11T19:18:10.367 回答