We're reclaiming inactive PDIs to keep them available for active builders. Learn what's changing, who's affected, and how to protect your work. Read More

Empty selected value in SN Record Picker in a Widget

SamuelTse
Tera Guru

Hi,

I basically have two fields on the widget ,which is part of the catalog form, and the form will be used in Service Portal. One field is a dropdown (Type) and the second one is a SN Record picker (Item). The record picker is dynamic. The filter changes based on the value selected in the Type field. All these work perfectly fine.

However, when I select a Type, then select and Item. Now going back to select another Type. the previously selected Item is still on display. I want to remove the selected Item after the Type field changes. It sounds simply but how can i achieve this?

I tried to simply empty the variable, didn't work:

$scope.item = {

  displayValue: "",

  value: "",

  name: 'Item'

  };

Thanks


Sam

1 ACCEPTED SOLUTION

I would suggest changing your controller like this and see if it works:



$scope.loanerItem = {  


  displayValue: "",  


  value: "",  


  name: 'loanerItem'  


};  


 


$scope.updateItem = function(){  


  $scope.loanerItem.displayValue = "";


  $scope.loanerItem.value = "";


};


View solution in original post

5 REPLIES 5

Jon Barnes
Kilo Sage

do you have a scope watch setup on your "type" field so that when it changes, you can empty the item with the code you put?



can you post your controller/html from your widget here?


Hi Jon,



Here is my HTML template:


<div class="form-group col-sm-8">


      <label>


              Type


      </label>


      <select ng-model="selectedType" class="form-control" ng-change="updateItem()">


              <option ng-repeat="x in c.data.types" value="{{x.value}}">{{x.name}}</option>


      </select>


</div>


<div class="form-group">


      <label>


              Select an Item


      </label>


      <sn-record-picker field="loanerItem" table="'inventory'" display-field="'u_name'" display-fields="'u_model, u_name'"


              value-field="'sys_id'" search-fields="'u_name'" page-size="100" default-query="'u_item=' + selectedType"></sn-record-picker>


</div>



Here is my controller :


function($scope) {


  /* widget controller */


  var c = this;



  $scope.selectedItem = "";


  $scope.wItem = {


  displayValue: "",


  value: "",


  name: 'loanerItem'


  };



  $scope.updateItem = function(){




              //this doesn't work


  $scope.wItem = {


  displayValue: "",


  value: "",


  name: 'loanerItem'


  };




  };



}



I stripped down my code quite a bit. I have some other logins in my form. c.data.types does return the records of all Types. I don't post the code for Server Controller because I don't think it is the issue here. Hopefully nothing is missing.



Thank you



Sam


I would suggest changing your controller like this and see if it works:



$scope.loanerItem = {  


  displayValue: "",  


  value: "",  


  name: 'loanerItem'  


};  


 


$scope.updateItem = function(){  


  $scope.loanerItem.displayValue = "";


  $scope.loanerItem.value = "";


};


Thank you so much!! It does work!!



I am sure I tried something like that but I think I used 'wItem' other than 'loanerItem', as you can see in my original code.



Now my question is: is it important to have the scope variable the same name as the "name" defined in the object? like LoanerItem in my case?



Thanks!



Sam