- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-01-2015 12:27 AM
Hi,
Just to clear out the conditions 😃 I'm pretty new to servicenow and developing. Coding has always been there in the background all life, but it has never been my main work.
I'm trying to learn how to get angularJS to work like I want and I've been through a lot of tutorials of AngularJS but I havnt found anyone that covers really how to get the information from ServiceNow. all these always put the data in the controller manually.
And when it comes to REST, Im totally new 😃
I've played around abit with the info from Angular in ServiceNow: Tutorial #3 - REST Calls-John Andersen
and I get it to work. But since that one requires a input for the tickets to show, I want to know how to make a ui page that shows the records without any manually input calling for the function to get it.. but show all the records that my query is. Im trying this out on my personal dev-instance.
In my dream world I would just take away the function part and use the get right up, but I guess Im missing something.
This is what I got.
UI page:
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<!-- Import AngularJS Library -->
<g:requires name="angular.min.jsdbx" />
<!-- Import my UI Script - get updated timestamp to invalidate cache if script changes -->
<g2:evaluate var="jvar_stamp">
var gr = new GlideRecord('sys_ui_script');
gr.get("e608a7e94fc41600028f7ab28110c748");
gr.getValue('sys_updated_on');
</g2:evaluate>
<g:requires name="driftinformation.jsdbx" params="cache=$[jvar_stamp]" />
<!-- The User Interface -->
<div ng-app="descEditor" style='padding:40px;'>
<div ng-controller="DescriptionText">
<table><tr>
<!-- <td style='width: 300px; vertical-align: top;'>
<p>NUMBER</p>
<input ng-model="incnum" ng-change="updateRecordList(incnum);"/>
</td> -->
<td style='vertical-align: top; padding: 20px;
background-color: #B2B2B2; width: 200px;'>
<div ng-repeat="num in numbers">{{num.number}}</div>
</td>
</tr></table>
</div>
</div>
</j:jelly>
UI Script:
var myApp = angular.module('descEditor', []);
myApp.controller('DescriptionText', [
'$scope',
'$http',
function($scope, $http) {
$scope.incnum = "INC010";
$scope.url = '/api/now/table/incident';
$http.defaults.headers.common.Accept = "application/json";
$http({
method: 'GET',
url: $scope.url + "?sysparm_query=numberSTARTSWITH"+incnum+
"^ORDERBYDESCnumber"+
"&sysparm_fields=number&sysparm_limit=25",
}).
success( function(data, status) {
$scope.numbers = data.result;
}).
error ( function(data, status) {
$scope.numbers = [{"number": "Error fetching list"}];
});
}
] );
I'm hoping someone in the community can point me in the right direction 😃
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-01-2015 01:34 AM
Hi Göran Lundqvist,
Great to see many pepl trying Angular on Service now. to execute any function on Load u need to use this attribute 'data-ng-init'.
so HTML side looks like this
<div ng-controller="DescriptionText" data-ng-init="getAllActive()">
And your Controller would look like this. add that method.
$scope.getAllActive = function(){
$http({
method: 'GET',
url: $scope.url + "?sysparm_query=active=true",
}).
success( function(data, status) {
$scope.numbers = data.result;
}).
error ( function(data, status) {
$scope.numbers= [{"number": "Error fetching list"}];
});
};
it will show all Active Incidents.
I Hope it WOrks for u.
***mark helpful/like/correct based on impact of reply*****
Regards,
Rushit Patel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-11-2016 12:55 AM
Thanks alot Goran
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-02-2016 11:07 AM
hey guys,
checkout my angular app on share.
name:ToDoNOW(WunderList Integration) using AngularJS
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-24-2015 07:19 AM
Hi goranlundqvist,
sorry for late replay..it was too late that night and on other day i was buried in boring company work!
i didnt know that we can add isPublic() function in s.includes and make it public..tnx for that.
and i have code from developer site..that uses glideajax and angular..(to-do page)...and if i add it on any page(dynamic content block) it works fine.
one other thing i noticed is if i add two dynamic block(both using anglurjs) it breaks the page....so best practise would be to load angular in header dropzone.
and in your code your input is outside your ng-app div...it wont work if u put that outside that div. put both line below this line <div id="activeinfo" ng-app="descEditor">
and yeah sweet victory over City. great to know that you are gooner too! we have best chance to win EPL this season
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-24-2015 02:26 PM
rossipatel, whn you say you add it to your dynamic block block, is this on fuji or geneva? Since I added it on my personal dev which has geneva and it works like a charm. But if I create a new site on my dev(just to be sure nothing else interfers) and only add this block, then angularJS aint working, just get the tabs... But if I use the same code on a ui page in fuji it works.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-31-2015 08:57 AM
HI,
I was running Fuji. may b you should run same code on other fuji instance.
