2016-08-31 9 views
0

私は、問題がExpressサーバーにパラメーターを渡すことにあると考えていました。私はそれ以来、Angular側に問題があることを示してきました。 flConstruct.js関数でidをハードコードすると、クエリは期待通りに機能しました。 idがflCachedConstructs関数からflConstructの "get"に渡されていないようです。あなたが見ることができるように、私はコンソールログを使用していくつかの場所にある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; 
}); 

答えて

0

私の間違いが見つかりました。 flCachedConstruct.jsでgetを呼び出すと、渡すパラメータが正しく定義されませんでした。私はパラメータ名、 "id"とパラメータ値、constructIDを含める必要がありました。この関数呼び出しの "id"は、私がflConstruct.jsのパラメータを呼び出したものと一致します。

flConstruct.get({id:constructId}、関数(データ){

関連する問題