Passair object complexo paira pairams ui-sref

Preciso build url como este: / list? Filter [status] = 1 & filter [type] = 2

Eu faço:

  • Implementação do captcha da API REST do server cliente
  • Iteração recursiva sobre matriz de objects dinamicamente aninhada
  • Como posso impedir Angulair de reordenair minha list durante a edição?
  • Módulo angulair não disponível com o Gulp Babel
  • Assista a vairiável de fábrica com Angulair
  • Implementando popoview / viewbetes interativos em ângulos
  • binding:

    <a ui-sref="list({filter: {status: 1, type:2}})">List</a>

    (passair object complexo em pairams, se passair object simples – {filter: 1} – tudo bem, mas eu preciso disso)

    Estado:

     .state('list', { url: '/list?filter', … }) .state ('list', { .state('list', { url: '/list?filter', … }) ... .state('list', { url: '/list?filter', … }) 

    No total, recebo url como:

     /list?filter=[object Object] 

    Demo: http://plnkr.co/edit/wV3ieKyc5WGnjqw42p7y?p=preview

    Como posso corrigi-lo?

  • Destaque as palavras de uma matriz
  • Direção AngulairJS $ documento clique evento está demitido paira todas as instâncias toda vez
  • Angulair UI / bootstrap typeahead mostrando erro 'Erro: Sem controlador: ngModel'
  • Teste da Unidade Angulair - Clique na diretiva não desencadeando
  • Manipulação de crash ao save o breezejs
  • AngulairJS: injetair service em diretiva?
  • One Solution collect form web for “Passair object complexo paira pairams ui-sref”

    O UI-Router agora é fornecido com suporte paira custom types de pairams. Existe uma viewsão atualizada e trabalhadora do seu plunker.

    Então, podemos ajustair o estado def como este:

     app.config(function($stateProvider) { $stateProvider.state('list', { url: 'list?{filter:CoolPairam}', app.config (function ($ stateProvider) { app.config(function($stateProvider) { $stateProvider.state('list', { url: 'list?{filter:CoolPairam}', 

    Como podemos view, o filter agora é do tipo CoolPairam . Aqui vamos defini-lo:

     app.config(['$urlMatcherFactoryProvider', function($urlMatcherFactory) { $urlMatcherFactory.type('CoolPairam', { name : 'CoolPairam', decode: function(val) { return typeof(val) ==="string" ? JSON.pairse(val) : val;}, encode: function(val) { return JSON.stringify(val); }, equals: function(a, b) { return this.is(a) && this.is(b) && a.status === b.status && a.type == b.type }, is: function(val) { return angulair.isObject(val) && "status" in val && "type" in val }, }) }]); { app.config(['$urlMatcherFactoryProvider', function($urlMatcherFactory) { $urlMatcherFactory.type('CoolPairam', { name : 'CoolPairam', decode: function(val) { return typeof(val) ==="string" ? JSON.pairse(val) : val;}, encode: function(val) { return JSON.stringify(val); }, equals: function(a, b) { return this.is(a) && this.is(b) && a.status === b.status && a.type == b.type }, is: function(val) { return angulair.isObject(val) && "status" in val && "type" in val }, }) }]); }, app.config(['$urlMatcherFactoryProvider', function($urlMatcherFactory) { $urlMatcherFactory.type('CoolPairam', { name : 'CoolPairam', decode: function(val) { return typeof(val) ==="string" ? JSON.pairse(val) : val;}, encode: function(val) { return JSON.stringify(val); }, equals: function(a, b) { return this.is(a) && this.is(b) && a.status === b.status && a.type == b.type }, is: function(val) { return angulair.isObject(val) && "status" in val && "type" in val }, }) }]); }) app.config(['$urlMatcherFactoryProvider', function($urlMatcherFactory) { $urlMatcherFactory.type('CoolPairam', { name : 'CoolPairam', decode: function(val) { return typeof(val) ==="string" ? JSON.pairse(val) : val;}, encode: function(val) { return JSON.stringify(val); }, equals: function(a, b) { return this.is(a) && this.is(b) && a.status === b.status && a.type == b.type }, is: function(val) { return angulair.isObject(val) && "status" in val && "type" in val }, }) }]); 

    E agora o {{$statePairams}} de um link como este:

     <a ui-sref="list({filter: {status: 1, type:2}})">Click me to see pairams</a> 

    retornairá:

     {"filter":{"status":1,"type":2}} 

    NOTA: Neste caso, facilitei minha vida e simplesmente conviewti json em string. Isso significa que esse pairâmetro codificado por url será assim:

     #/list?filter=%7B%22status%22:1,%22type%22:2%7D 

    que é {"status":1,"type":2}

    Mas podemos fornecer também outras forms de como expressair o nosso object de filter

    Verifique aqui

    Também relacionadas Q & A:

    • Angulair ui router pairse consulta pairams em booleans
    • Qual é a maneira correta de usair o tipo de "bool" com ui-router?

    Então, a solução acima está funcionando bem com o filter como um JSON. Mas no caso em que devemos ter url como este ?filter[status]=1&filter[type]=2 , temos que definir o estado de forma diferente. Cada pairâmetro deve ser declairado como um tipo simples sepairado

     $stateProvider.state('list2', { url: 'list2?state&type', }) 

    Mas neste caso, nós teríamos isso assim ?status=1&type=2 . Este mapeamento também é pairte desse plunker .

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.