2017-04-07 5 views
3

Je travaille dans ServiceNow et je crée un widget qui affiche une fenêtre modale avec un formulaire incorporé. Je veux pré-remplir certains des champs dans le formulaire modal, mais je ne sais pas comment faire cela.ServiceNow angularjs: comment transmettre les valeurs de script du serveur au script client

ici est mon code HTML d'un bouton qui ouvre la fenêtre modale:

<div> 
    <input class="btn btn-support" ng-click="c.onbSupport()" type="button" value="Ask a Question"> 
</div> 

mon script client ressemble à ceci:

function($scope,spModal) { 
    /* widget controller */ 
    var c = this; 

     c.onbSupport = function(){ 
     spModal.open({ 
      title: 'Submit Your Question', 
      widget: 'form-new', 
      widgetInput: {table: 'support_tickets'}, 
      buttons: [] 
     }).then(function(){ 
    })  
    } 
} 

et enfin, voici mon script serveur:

var usr = gs.getUserID(); 
    var gr = new GlideRecord('info'); 
    gr.addQuery('opened_for', usr); 
    gr.query(); 
    if(gr.next()) { 
     data.parent = gr.getValue('number'); 
     data.short_description = gr.getValue('short_description'); 
    } 

Dans la forme modale, j'ai deux champs (parent_case et catégorie) que je voudrais être pré-rempli avec des données .parent et data.short_description respectivement. Pour transmettre la valeur du script serveur en HTML, je sais que vous pouvez faire {{data.parent}}. Cependant, comment puis-je obtenir ces valeurs dans le script client qui génère le formulaire modal?

Répondre

0

Vous devez transmettre les valeurs au script client et "catch".

Je suppose que vous essayez de transmettre plusieurs valeurs. Vous avez donc besoin d'un tableau pour conserver les valeurs et les transmettre au script côté client.

script serveur:

var records=[]; //define array first 
var usr = gs.getUserID(); 
var gr = new GlideRecord('info'); 
gr.addQuery('opened_for', usr); 
gr.query(); 
if(gr.next()) { 
    var rec={} //define a record 
    rec.parent = gr.getValue('number'); 
    rec.short_description = gr.getValue('short_description'); 
    records.push(rec); //populate array with records 
} 
data.records=records; // you need to assign your array as data 

Script client:

function($scope,spModal) { 
    /* widget controller */ 
    var c = this; 
    var infos=c.data.records;//this is the "catch" part 
} 

Note: Je n'ai pas testé ce code.