$ resource不会更改网址的ID

时间:2016-12-20 10:34:41

标签: javascript angularjs angular-resource

我很难更改传递给$resource的网址的ID参数。显然,即使我输入固定值Resource.get(id:$routeParams.id),该值也不会更改为从(Resource.get(id:1))重新显示的正确值,从而导致以下错误:

  

TypeError:encodeUriSegment不是函数

当我更改固定值(baseURL+'client/1')的网址的ID参数时,它可以正常工作。

这是我的字体:

app.js     'use strict';

angular.module('serviceOrder',['ngRoute','ngResource'])
    .config(function ($routeProvider,$locationProvider) {
        /*$locationProvider.html5Mode({
            enabled: true,
            requireBase: false
        });*/

        $routeProvider.when('/clients', {
            templateUrl: 'views/clients.html',
            controller: 'ClientController'
        });

        $routeProvider.when('/newclient',{
            templateUrl: 'views/client.html',
            controller: 'NewClientController'
        });

        $routeProvider.when('/editclient/:id',{
            templateUrl: 'views/client.html',
            controller: 'EditClientController'
        });

        $routeProvider.otherwise({redirectTo: '/clients'});
    });

controler.js

'use strict';

angular.module('serviceOrder')
.controller('EditClientController',['$scope','$routeParams','clientService',
        function ($scope,$routeParams,clientService) {
            $scope.message = 'Loading ...';
            $scope.client = {};
            $scope.phone = {id:'',brand:'',model:'',state:'',esn:''};
            debugger;
            clientService.getClients().get({id:$routeParams.id})
                .$promise.then(
                function (response) {
                    $scope.client = response;
                },function (error) {
                    $scope.message = 'Error: ' + error;
                }
                );

    }]);

service.js     'use strict';

angular.module('serviceOrder')
    .constant('baseURL', 'http://localhost:8080/service-order-rest/rest/')
    .service('clientService',['$resource','baseURL',function ($resource,baseURL){
        this.getClients = function () {
            return $resource(baseURL+'client/:id',null,{'update':{method:'PUT'}});
        };
    }]);

2 个答案:

答案 0 :(得分:0)

我们在这里有一个错误:

Sub Option_choice()

Dim Choice_box As String

Do
Choice_box = InputBox("Quel état souhaitez-vous restituer ?" & _
     vbCrLf & "Entrez la valeur 1, 2 ou 3" & _
     vbCrLf & vbCrLf & vbTab & "1 - Bilan" & _
     vbCrLf & vbTab & "2 - Compte de résultat" & _
     vbCrLf & vbTab & "3 - Hors bilan", vbQuestion, "Entrez la valeur 1, 2 ou 3")

Select Case Choice_box
 Case "1"
     MsgBox ("Bilan")
 Case "2"
     MsgBox ("Compte de résultat")
 Case "3"
     MsgBox ("Hors bilan")
 Case Else
     MsgBox "Vous devez sélectionner une valeur égale à 1, 2 ou 3" & _
     vbCrLf & vbCrLf & "Désirez-vous continuer ?", vbYesNo + vbExclamation, "Erreur"

        If vbYes Then
           Loop
        ElseIf vbNo Then
           MsgBox "Fin de l'opération, aucun état n'a été généré", vbInformation, "Fin du programme"
        Else
         'rien
        End If
End Select

End Sub

答案 1 :(得分:0)

您的param默认值未正确配置。为实现此目标,根据$resource's docs,您必须指定API方法的模式,该模式将接收{ id: '@id' }而不是null等参数。

$resource(baseURL + 'client/:id', //url
    { id: '@id' }, // parameters
    {
        'update': { method: 'PUT' } // methods
    });