Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要关于角工厂的帮助吗_Javascript_Angularjs_Angular Resource - Fatal编程技术网

Javascript 需要关于角工厂的帮助吗

Javascript 需要关于角工厂的帮助吗,javascript,angularjs,angular-resource,Javascript,Angularjs,Angular Resource,嗨,好有棱角的社区 我很困惑,我想我已经理解了工厂的宗旨和理念,但似乎没有 这是我的问题(当然对你来说很简单): 我想使用我的RESTAPI(工作完美)使用Angular和.factory rest.js var app = angular.module('urlShortener', ['ngRoute', 'ngResource']); app.factory('API', ['$resource', function($resource){ return $resource(

嗨,好有棱角的社区

我很困惑,我想我已经理解了工厂的宗旨和理念,但似乎没有

这是我的问题(当然对你来说很简单):

我想使用我的RESTAPI(工作完美)使用Angular和.factory

rest.js

var app = angular.module('urlShortener', ['ngRoute', 'ngResource']);

app.factory('API', ['$resource',
  function($resource){
    return $resource('/link'});
  }],{
    get: {method:GET},
        post: {method:POST},
        put: {method:PUT},
        delete: {method:DELETE},
    }
);

app.controller('GetAll', function ($scope) {
        $scope.links = API.get();
});
<div ng-controller="GetAll">
    <ul>
        <li ng-repeat="link in links">
          <p>{{link.itemId}} --> {{link.url}}</p>
        </li>
      </ul>
  </div>
app.factory('API', ['$resource', function($resource) { return $resource('/link'); }]);

app.controller('GetAll', ['$scope', 'API', function ($scope, API) {
    API.query().$promise.then(function(links) {
        $scope.links = links;
    });
}]);
index.ejs

var app = angular.module('urlShortener', ['ngRoute', 'ngResource']);

app.factory('API', ['$resource',
  function($resource){
    return $resource('/link'});
  }],{
    get: {method:GET},
        post: {method:POST},
        put: {method:PUT},
        delete: {method:DELETE},
    }
);

app.controller('GetAll', function ($scope) {
        $scope.links = API.get();
});
<div ng-controller="GetAll">
    <ul>
        <li ng-repeat="link in links">
          <p>{{link.itemId}} --> {{link.url}}</p>
        </li>
      </ul>
  </div>
app.factory('API', ['$resource', function($resource) { return $resource('/link'); }]);

app.controller('GetAll', ['$scope', 'API', function ($scope, API) {
    API.query().$promise.then(function(links) {
        $scope.links = links;
    });
}]);

感谢:)

如果要执行api请求,请使用

这是我在应用程序中使用的一段代码:

angular

    .module('myApp')
    .factory('apiFactory', apiFactory);

function apiFactory($http) {

    return {
        getDataFromApi: getDataFromApi,
    };

    function getDataFromApi(url) {

        return $http({
            method: 'GET', // or post or whatever
            url: url,
            headers: {
               ...
            }
        })

        .then(success)
        .catch(fail);

        function success(response) {
            return response.data;
        }

        function fail(response) {
            // handle error
        }

    }

}

您不能只将$resource实例分配给$scope.links,您需要在底层承诺解析时执行此操作:

app.controller('GetAll', ['$scope', 'API', function ($scope, API) {
    API.get().$promise.then(function(links) {
        $scope.links = links;
    });
}]);
您必须在控制器中注入“API”

app.controller('GetAll', function ($scope, API) {
    $scope.links = API.get();
});

这就是你要找的吗?


如果rest服务返回一个对象数组,则需要使用查询函数

$scope.links = API.query(); // instead of API.get()
如果您需要在承诺返回时执行其他操作,请使用以下内容:

API.query().$promise.then(function(result){
     $scope.links = result;
     // any other operation related to the request here
});

是的,这就是我开始的地方,但是参考$http API,为了更高层次的抽象,请查看$resource服务。。。我只是想把它弄干净^^它怎么不工作了?您是否收到任何错误消息?是否正在发出网络请求?您得到了:1)工厂,2)使用$resource服务,3)带有表达式绑定的视图。哪一位不起作用?我在我的页面上看到:MEAN Stack urlShortener{{{link.itemId}}-->{{link.url}你熟悉浏览器控制台吗。在这里您将看到错误消息。在这里,您可以在JavaScript执行期间编写输出,以帮助诊断问题。如果你想在JavaScript调试方面有所进展,你真的必须熟悉它。我对它很熟悉,只是忘记了x)我不明白它应该做什么,但它不起作用:(你不明白什么?只是为了确保,你修复了代码中的语法错误(括号)?然后我发布了您需要使用的代码段。我的工厂有任何错误吗?我用您的代码段替换了我的整个控制器:/是的,有错误。您没有检查控制台,是吗?这是非常明显的语法问题,一旦您放入缺少的括号,它应该可以工作。没有,我没有看到x)