
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-16-2019 04:23 PM
I am new to ServiceNow. I was testing a developer training lab exercise regarding Angular Page UI. I get error using g_user.username. If I remove this reference everything else works fine. The error is also given below:
My Angular Client UI Script (x_304789_angular_a.angular_app_client_lo) is:
angular.module('angularapp',[]);
angular.module('angularapp').controller('AngularAppCtrl',function($scope){
$scope.myVar = '';
$scope.i = 0;
$scope.clearTxt = function(){
$scope.myVar = '';
$scope.i++;
alert("The myVar value was cleared " + $scope.i + " times by " + g_user.userName + ".");
};
});
My Angular UI Page defined in Application Studio is:
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"></link>
<script src="x_304789_angular_a.angular_app_client_lo.jsdbx"></script>
<div ng-app="angularapp" ng-controller="AngularAppCtrl as appctrl">
<input type="text" ng-model="myVar" placeholder="Enter some text here"></input>
<p></p>
<div class="jumbotron">
<h1 class="display-3">Hello World!</h1>
<hr class="m-y-2" />
<p>{{myVar}}</p>
</div>
<button ng-click="clearTxt()" type="btn btn-primary">Clear Text</button>
</div>
</j:jelly>
I am getting this console error on pressing Clear Text button as it calls clearTxt() which in turn references g_user.userName. Please let me know why this object is not available in UI script:
-
'g_user' is not defined at $scope.clearTxt (https://dev68393.service-now.com/x_304789_angular_a.angular_app_client_lo.jsdbx:9:3) at fn (Function code:2:138) at e (https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js:284:187) at m.prototype.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js:148:336) at m.prototype.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js:149:40) at Anonymous function (https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js:284:237) at hg (https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js:39:297) at d (https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js:39:211)
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-19-2019 09:42 AM
Thanks Paul. Actually, the issue was that on the UI page (HTML) piece, I was using the Direct option. This was making g_user unavailable. Once I unticked the Direct option, it worked like a charm.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-16-2019 05:48 PM
UI Scripts don't have access to global variables when used in Service Portal.
You'll need to pass it in somehow.
Maybe try this instead
$scope.page.g_user
ServiceNow Nerd
ServiceNow Developer MVP 2020-2022
ServiceNow Community MVP 2019-2022

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-19-2019 09:42 AM
Thanks Paul. Actually, the issue was that on the UI page (HTML) piece, I was using the Direct option. This was making g_user unavailable. Once I unticked the Direct option, it worked like a charm.