I have reduced my code to these 4 files :
Backend.js
var items = [{
"name": "Name1",
"info": "Blabla",
"pictures": [
{
"file": "Assets/ped0.jpg",
"info": "blabla diag"
}],
"scenario":[
{
"id" : "1",
"question": "During ...1",
"question_picture": "img11.jpg",
"answer1_picture": "img12.jpg",
"answer2_picture": "img13.jpg"
},
{
"id" : "2",
"question": "During ...2",
"question_picture": "img21.jpg",
"answer1_picture": "img22.jpg",
"answer2_picture": "img23.jpg"
}
]
}];
function clone(obj) {
return JSON.parse(JSON.stringify(obj));
}
function getItems() {
return clone(items);
}
function getItem(name) {
var ret = items.find(function(item) {
return item.name == name;
});
return ret ? clone(ret) : null;
}
module.exports = {
getItems: getItems,
getItem: getItem
};
MainView.ux
<App>
<Router ux:Name="router"/>
<JavaScript>
var Observable = require("FuseJS/Observable");
module.exports = {
currentName: this.Parameter.map(function(param) {
return param.item;
}),
currentId: this.Parameter.map(function(param) {
return param.itemId;
})
};
</JavaScript>
<ClientPanel>
<Navigator ux:Name="navigator" DefaultPath="home">
<PageOne ux:Template="home" CurrentName="Name1" router="router" />
<PageTwo ux:Template="page2" CurrentName="{currentName}" CurrentId="{currentId}" router="router"/>
</Navigator>
</ClientPanel>
</App>
pageOne.ux
<Page ux:Class="PageOne">
<string ux:Property="CurrentName" />
<Router ux:Dependency="router"/>
<JavaScript>
var Observable = require("FuseJS/Observable");
var Backend = require("Backend.js");
function start(item) {
var id = "1";
console.log("Start Param1 item " + item.data.name);
console.log("Start Param2 id " + id);
router.push("page2", { item: item.name, itemId: id });
}
module.exports = {
item: this.CurrentName.map(function(name) {
var item = Backend.getItem(name);
if (item) {
item.mainPicture = item.pictures[0];
}
return item;
}),
start: start
};
</JavaScript>
<Panel ux:Class="area.Button" Margin="10" Padding="10" >
<string ux:Property="Text" />
<Text Color="Black" Value="{ReadProperty Text}" TextAlignment="Center" Alignment="Center" />
</Panel>
<Panel>
<With Data="{item}">
<Panel>
<area.Button Text="Start" Alignment="Bottom" Margin="20" Padding="10" Clicked="{start}" HitTestMode="LocalBoundsAndChildren" />
<DockPanel Height="250" Dock="Top">
<Panel Layer="Background">
<Image File="{mainPicture.file}" StretchMode="UniformToFill" />
</Panel>
<Text Color="Black" Value="{name}" FontSize="40" Alignment="HorizontalCenter" Dock="Bottom">
</Text>
</DockPanel>
</Panel>
</With>
</Panel>
</Page>
pageTwo.ux
<Page ux:Class="PageTwo">
<Image Layer="Background" File="Assets/background.png" StretchMode="Fill" Opacity=".7"/>
<Router ux:Dependency="router"/>
<string ux:Property="CurrentName" />
<string ux:Property="CurrentId" />
<JavaScript>
var Observable = require('FuseJS/Observable');
var Backend = require("Backend.js");
var itemName = this.CurrentName.map(function(param){
console.log("PARAM1 param " + param);
console.log("PARAM1 param.value " + param.value);
console.log("PARAM1 param.item " + param.item);
return param;
});
var itemId = this.CurrentId.map(function(param){
console.log("PARAM2 param " + param);
console.log("PARAM2 param.value " + param.value);
console.log("PARAM2 param.itemId " + param.itemId);
return param;
});
module.exports = {
itemName: itemName,
itemId: itemId
};
</JavaScript>
<Panel>
</Panel>
</Page>
the Viewport gives :
Build completed in 9,82 seconds
[Viewport]: Start Param1 item Name1
[Viewport]: Start Param2 id 1
[Viewport]: PARAM1 param
[Viewport]: PARAM1 param.value undefined
[Viewport]: PARAM1 param.item undefined
[Viewport]: PARAM2 param
[Viewport]: PARAM2 param.value undefined
[Viewport]: PARAM2 param.itemId undefined
What I would like to have is :
[Viewport]: Start Param1 item Name1
[Viewport]: Start Param2 id 1
[Viewport]: PARAM1 Name1
[Viewport]: PARAM2 1
In the process of reducing the code, I lost the ability to retrieve even the first parameter.
I tried several combinations of param.value param or param.itemName but did not succeed.
I hope with these codes, is my issue explicit enough?
Thank you in advance