2017-07-03 4 views
0

Ich habe eine URL, die ich die folgende Art und Weise zu erstellen:js hinzufügen Eigenschaft url param Objekt

let forwardBaseUrl = 'https://www.usergems.com/api/gmail/info?' + $.params({ 
       event: 'Click forwarded link', 
       email: btoa(userEmail), 
       properties: { 
        forwardId: btoa(forwardId) 
       } 
      }); 

Gibt es eine einfache Möglichkeit, das Objekt eine Eigenschaft auf die Eigenschaften zu einem späteren Zeitpunkt hinzufügen: ich das gleiche Ergebnis will wie dies:

let forwardBaseUrl = 'https://www.usergems.com/api/gmail/info?' + $.params({ 
       event: 'Click forwarded link', 
       email: btoa(userEmail), 
       properties: { 
        forwardId: btoa(forwardId), 
        forwardUrl: 'http://google.at' 
       } 
      }); 

am besten wäre eine lösung, die die params zusammenführt. Ähnlich wie diese (Arbeits offensichtlich nicht):

forwardBaseUrl.params.push({properties: { forwardUrl }}) 
+0

forwardBaseUrl + = "& forwardUrl =" + "http://google.at" –

Antwort

1

Zuerst wird die tatsächliche JQuery Methode ist $.param(), nicht $.params().

Als nächstes, wenn Sie Ihren Code zu „bauen“, um das „params“ Objekt Refactoring und eine Funktion einzurichten, die eine Eigenschaft zu Ihrem Objekt hinzufügen können, dann können Sie die serialisierte Ergebnis jederzeit regenerieren Sie mögen:

var userEmail = "[email protected]"; 
 
var forwardId = "12345"; 
 

 
var props = { 
 
    forwardId: btoa(forwardId) 
 
}; 
 

 
var paramObj = { 
 
    event: 'Click forwarded link', 
 
    email: btoa(userEmail), 
 
    properties: props 
 
}; 
 

 
let forwardBaseUrl = 'https://www.usergems.com/api/gmail/info?' + $.param(paramObj); 
 

 
console.log(forwardBaseUrl); 
 

 
function changeProperties(prop, value, addRemove){ 
 
    if(addRemove){ 
 
     // Add new property to properties object 
 
     props[prop] = value; 
 
    } else { 
 
     // remove property from properties object 
 
     delete props[prop]; 
 
    } 
 
} 
 

 
// Add a new property to the params "properties" object: 
 
changeProperties("forwardUrl", "http://google.at", true); 
 

 
// Update serialized params 
 
forwardBaseUrl = 'https://www.usergems.com/api/gmail/info?' + $.param(paramObj); 
 

 
console.log(forwardBaseUrl);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0
var restObj = { 
    url: 'https://www.usergems.com/api/gmail/info?' 
    params: { 
    event: 'Click forwarded link', 
    email: 'asda', 
    properties: { 
     forwardId: btoa('asd') 
    } 
    }, 
    getUrl: function() { 
    return this.url + $.param(this.params); 
    } 
} 

// jetzt können Sie params Objekt restObj.params.properties.anotherParam = ändern 'param';

// und neue URL console.log (restObjgetUrl.) Erhalten

Verwandte Themen