objetos - objeto window javascript ejemplos
Crear cadena de consulta a partir de objetos de parĂ¡metros (4)
Angular usa internamente la función buildUrl()
para hacer una cadena de consulta desde un objeto de parámetros. Por ahora es imposible usarlo en tu código porque es privado de $HttpProvider
menos que quieras hacer un poco de magia eval()
.
Temas relacionados en github:
Cómo construir una url con parámetros de consulta en Angularjs.
Veo la API $location.search()
el problema es $ ubicación (url) es redirigir a la url. En mi caso, quiero pasar una url y una clave: pares de valores para los parámetros de consulta y construir la url. algo como
url: /a/b/c
params: {field1: value1, field2: value2}
resultado: /a/b/c?field1=value1&field2=value2
Me gusta usar esta url para enlaces. También he visto la codificación angular ?
, &
personajes. ¿Puedo evitar esto?
Editar:
Mi intención era usar la url como href para elementos de anclaje. Utilizo $ http para enviar la solicitud, pero a veces necesito proporcionar un enlace, con parámetros de consulta (según el objeto actual)
Gracias
Creo que realmente estás ladrando el árbol equivocado ... necesitas echar un vistazo al servicio $ http que te da $ http.get (url, config) o $ http.post (url, data, config). Para una solicitud GET con parámetros, consulte el siguiente SO
$ http obtener parámetros no funciona
Para obtener información sobre $ http y cómo funciona, consulte los documentos de Angular.
http://docs.angularjs.org/api/ng.$http
Sin embargo, quizás no estoy entendiendo el objetivo y realmente quieres navegar a un lugar diferente, lo que sugiero aquí es solo hacer la solicitud en segundo plano (estilo AJAX).
El js
angular.module("myApp", []).controller("MyCtrl", ["$scope", "$window", function($scope, $window) {
$scope.goPlaces = function(url, parameter) {
$window.open("http://www."+url+"?q="+parameter);
//$window.open("http://www."+url+"?q="+parameter, "_self");
//$window.open("http://www."+url+"?q="+parameter, "_top");
};
}])
El HTML
<div ng-app="myApp" ng-controller="MyCtrl">
<a href="#" ng-click="goPlaces(''google.com'',''Shaun Husain'')">Find me</a>
</div>
¿Esto funciona para tu caso?
Hay una buena solución a partir de 1.4+. Puede crear una cadena de consulta a partir de un objeto de parámetros con $httpParamSerializer
:
var qs = $httpParamSerializer(params);
Predeterminado $ http params serializer que convierte los objetos en cadenas de acuerdo con las siguientes reglas:
{''foo'': ''bar''} results in foo=bar
{''foo'': Date.now()} results in foo=2015-04-01T09%3A50%3A49.262Z (toISOString() and encoded representation of a Date object)
{''foo'': [''bar'', ''baz'']} results in foo=bar&foo=baz (repeated key for each array element)
{''foo'': {''bar'':''baz''}} results in foo=%7B%22bar%22%3A%22baz%22%7D" (stringified and encoded representation of an object)
Note that serializer will sort the request parameters alphabetically.
Las reglas de formato de URL internas y externas de angular son ligeramente diferentes.
La ubicación $ es un medio para activar rutas internas dentro de su propia aplicación.
Si es un enlace externo, entonces $ http es lo que quieres.
Si es un enlace interno, verifique que valga la pena revisar la sintaxis de hash / bang.