簡體   English   中英

均值堆棧-從控制器到$ resource對象的角度傳遞參數

[英]Mean Stack - Angular passing parameters from controller to $resource object

我發布了幾次,以為我的問題在於將參​​數傳遞給Express服務器。 從那以后,我已經證明問題出在角度方面。 當我在flConstruct.js函數中對ID進行硬編碼時,查詢按預期工作。 好像沒有將id從flCachedConstructs函數傳遞到flConstruct中的“獲取”。 如您所見,我使用控制台日志在多個位置打印出ID,然后打印出正確的ID。 由於某種原因,該參數未與flConstruct中的get關聯。 也許我的空格或語法不太正確。 您可以提供的任何見解將不勝感激。

// flConstructDetailCtrl.js
angular.module('app').controller('flConstructDetailCtrl', function($scope, flCachedConstructs, $stateParams, $state, flConstructDataService, flQuestionQueryParameterService){

console.log('Just inside the flConstructDetailCtr');
console.log('flConstructDetailCtr - before promise - $stateParams.id ' + $stateParams.id);


    flCachedConstructs.queryID($stateParams.id)
    .then(function(data) {
        // work with data here
        console.log("flConstructDetailCtr - Get Success " + data);
        console.log("flConstructDetailCtr - Get Success Question description " + data.description);
        console.log("flConstructDetailCtr - Get Success Question id " + data._id);
        flConstructDataService.setInitialized(true);

        flConstructDataService.setNewConstructId(data._id);
        flConstructDataService.setNewTitle(data.title);
        flConstructDataService.setNewDescription(data.description);
        $state.go("constructUpdate");
    });


//flCachedConstructs.js

angular.module('app').factory('flCachedConstructs', function(flConstruct,$http, $q, $state, $timeout) {
var constructList = null;  // temporarily set to null for testing purposes

return {
    queryID: function(id) {
        console.log("flCachedConstruct - queryID function by ID - start");
        console.log("flCachedConstruct - queryID function by ID - parameter = constructId " + id);
        var deferred = $q.defer();
        flConstruct.get(id, function(data) {
            if (data) {
                deferred.resolve(data);
                console.log("flCachedConstruct - queryID function by ID - resolved Data = " + data);
                console.log("flCachedConstruct - queryID function by ID - resolved Data data.description " + data.description);
                console.log("flCachedConstruct - queryID function by ID - resolved Data data._id " + data._id);
            }
            else {
                deferred.reject("Error getting Construct");
                console.log("flCachedConstruct - queryID function by ID - rejected Data");
            }
        });
        console.log("flCachedConstruct - queryID function by ID - return Promise data");
        return deferred.promise;
    },

}
})


//flConstruct.js

angular.module('app').factory('flConstruct',function($resource){
var ConstructResource = $resource('/api/constructs/:id', {id: '@id'}, {
    get: { method: 'GET', url: '/api/constructs/byId', params: {id: '@id'}},
//get: { method: 'GET', url: '/api/constructs/byId', params: {id: '570ab7c086ccc2d81ac18fa6'}},  (By hard coding the query worked as expected)

    query: { method: 'GET' , url: '/api/constructs', isArray: true },
    create: { method: 'POST'},
    update: { method: 'PUT' },
    delete: { method: 'DELETE', params: {id: '@id'}}
});

return ConstructResource;
});

我發現了我的錯誤。 flCachedConstruct.js中對get的調用未正確定義要傳遞的參數。 我需要包括參數名稱“ id”以及參數值constructID。 此函數調用中的“ id”與我在flConstruct.js中調用的參數匹配。

flConstruct.get({id:ConstructId},function(data){

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM