2015-10-16 78 views
0

我已经是我要追加到URL查询正确的对象的APIAngularJS传递值查询API

HTML中的ID值:

<div ng-init="tileID = '38'"></div> 

控制器:

app.controller('appCtrl',['$scope', '$http', 'ImageTiles', function($scope, $http, ImageTiles){ 

$scope.$watch('tileID', function(){ 
    console.log($scope.tileID); 
    $scope.get = function(tileID){ 
    ImageTiles.get({id: tileID}, function(data){ 
    }) 
    } 
}); 
}]); 

app.factory('ImageTiles', ['$resource', function ($resource) { 
    return $resource('http://api/v1/tiles/:id', { 
    id: "@id" 
}, 
{ 
'query': { 
    method: 'GET', 
    isArray: false 
} 
}); 
}]); 

例子:

在HTML我有总是手动输入38的值,然后想采取的值(38),并创建的http://api/v1/tiles/38的URL带回的数据。该API上的ID为38的对象。

我能得到的ID值,但不知道如何传递下去,并做出调用API。

回答

0

真的没有必要消耗它,通过在得到函数进行包装之前,你的$资源的发挥,干脆直接把它叫做:

app.controller('appCtrl',['$scope', '$http', 'ImageTiles', function($scope, $http, ImageTiles){ 

$scope.$watch('tileID', function(){ 
    console.log($scope.tileID); 
    ImageTiles.get({id: $scope.tileID}).$promise.then(function(tile) { 
     $scope.tile = tile; 
    }); 


}); 
}]); 
+0

这正是我在找的东西,非常感谢你:)。过了漫长的傍晚,我无法想象如何把这个价值传递下去。 –

0

这似乎只是一个基本骨架的角Application.To提供实际的路由机制,您必须修改app.js文件以配置不同的路由。

请参阅下面的示例代码:

config(['$routeProvider', function($routeProvider) { 
    $routeProvider. 
    when("/Apps", {templateUrl: "partials/App.html", controller: "driversController"}). 
    when("/App/:id", {templateUrl: "partials/App.html", controller: "appCtrl"}). 
    otherwise({redirectTo: '/App'}); 
}]); 
+0

感谢您的回复,这只是使用正确的URL请求触发API并返回对象的问题。 –

0

我看起来像

// Get 
$http.get("http://api/v1/tiles/"+ tileID) 
.success(function (response) { 
    // Do somthing 
}); 

希望它可以帮助你

+0

问题在于我必须将价值传递给工厂。 –

0

在你的手表,你可以指定参数NEWVALUE和属性oldValue,并使用NEWVALUE调用你的API。

app.controller('appCtrl',['$scope', '$http', 'ImageTiles', function($scope, $http, ImageTiles){ 

    $scope.$watch('tileID', function(newValue, oldValue){ 
     console.log(newValue);    
     ImageTiles.get({id: newValue}, function(data){ 
      console.log(data); 
     }); 

    }); 
}]);