- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
How to get the value of a variable with a widget?
Hello everybody,
I want to create a widget which gets and sets the value of a variable by using a drop-down list in Qlik Sense.
I could realize a drop-down list which sets a variable by using the setContent method from the Variable API. However, I have a problem with getting the value of a variable since the appropriate methods from the Variable API use a callback function. Is there a possibility to realize such a widget?
I am new to Qlik Sense development and I have some basic knowledge in AngularJS.
Thanks a lot in advance for your responses.
Kind regards,
Leon
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Stefan: Thank you for your response! I am looking forward to the new version of Qlik Sense.
Such a widget can also be developed using Qlik Sense 3.0. I developed the widget using the following method.
To set the value of a variable, use a html button with ng-click="app.variable.setContent('MYVAR','1');".
To get the value of a variable, create an input field in the properties (e.g. named myvar) of the widget and type there =$(MYVAR). You can use this value by referencing settings.myvar.
This works if the variable has a nummeric value.
Here is an example:
<div>
<select ng-model="selectVal" ng-init="opt=settings.selVarValue" ng-change="app.variable.setContent(settings.selVarName, selectVal);" class="lui-select">
<option ng-selected="opt==1" value="1">{{settings.optLabel1}}</option>
<option ng-selected="opt==2" value="2">{{settings.optLabel2}}</option>
<option ng-selected="opt==3" value="3">{{settings.optLabel3}}</option>
</select>
</div>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Leon,
I am also interested in knowing if it possible to use widgets in order to achieve such behavior.
Did you find anything?
Many thanks.
Best regards,
Robert
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
this can currently not be achieved (based on Widget in Qlik Sense 3.0). But we are soon publishing a new API in Qlik Sense 3.1 that will allow you to get to the desired result.
Stay tuned!
Regards
Stefan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Stefan: Thank you for your response! I am looking forward to the new version of Qlik Sense.
Such a widget can also be developed using Qlik Sense 3.0. I developed the widget using the following method.
To set the value of a variable, use a html button with ng-click="app.variable.setContent('MYVAR','1');".
To get the value of a variable, create an input field in the properties (e.g. named myvar) of the widget and type there =$(MYVAR). You can use this value by referencing settings.myvar.
This works if the variable has a nummeric value.
Here is an example:
<div>
<select ng-model="selectVal" ng-init="opt=settings.selVarValue" ng-change="app.variable.setContent(settings.selVarName, selectVal);" class="lui-select">
<option ng-selected="opt==1" value="1">{{settings.optLabel1}}</option>
<option ng-selected="opt==2" value="2">{{settings.optLabel2}}</option>
<option ng-selected="opt==3" value="3">{{settings.optLabel3}}</option>
</select>
</div>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Leon, are you sure API app.variable.* works in widgets?
My very simple code:
<lui-select x-model="value" ng-change="app.variable.setContent('varMeasure', '1');">
<option value="1">First</option>
<option value="2">Second</option>
<option value="3">Third</option>
</lui-select>
leads to js error:
Cannot read property 'getVariableByName' of undefined...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am trying to get this to work in a widget
<div class="lui-input-group">
<input class="lui-input-group__item lui-input-group__input lui-input" value={{settings.property4}} ng-change=app.variable.setContent('jtest','did I do it')></input>
</div>
The default value gets set by the variable but I can not get the change in the input box to be reflected back in the in the variable
Does it currently work? Has anyone managed to get this to work? I do not believe it works for the select ether