A working example for Fuse v0.8.4 showing how to implement a MVC structure using Fuse. Full source code available on GitHub (https://github.com/vicker/fuse-mixer/tree/master/fuse-mvc).
MainView.ux
<App Theme="Basic">
<!-- including external JavaScript files so that they can be required globally -->
<JavaScript File="model.js" ux:Global="Model" />
<JavaScript File="controller.js" ux:Global="Controller" />
<View />
</App>
views\View.ux
<StackPanel>
<JavaScript>
// exposing model and controller to this view
var model_is_flag = require ('Model').is_flag;
var controller_toggle_flag = require ('Controller').toggle_flag;
module.exports =
{
is_flag: model_is_flag,
toggle_flag: controller_toggle_flag
};
</JavaScript>
<WhileTrue Value="{is_flag}">
<Set _button.Visibility="Visible" />
</WhileTrue>
<WhileFalse Value="{is_flag}">
<Set _button.Visibility="Hidden" />
</WhileFalse>
<Button ux:Name="_button" Text="is_flag controlled button" />
<Button Text="Toggle Visibility">
<Tapped>
<Callback Handler="{toggle_flag}" />
</Tapped>
</Button>
</StackPanel>
model.js
var Observable = require ('FuseJS/Observable');
var is_flag = new Observable (true);
module.exports =
{
is_flag: is_flag
};
controller.js
var model_object = require ('Model');
function toggle_flag ()
{
console.log ("controller > toggle_flag")
model_object.is_flag.value = !model_object.is_flag.value;
}
module.exports =
{
toggle_flag: toggle_flag
};