Extra Solutions

Task: you want to rebuild the existing view or replace some component in it

Solution: use addView() of Webix views

addView is a Webix method of layout widgets like Form, MultiView, etc. You can use it to add Webix components to Jet views as well. Yet, it will work a little differently. The point is that addView uses regular webix.ui pattern of view initialization, which does not work with the Jet $scope. So, apart from the Webix view configuration that is usually passed to addView as a parameter, you must set $scope to this:

someWebixView.addView({ $scope:this, view:"someWebixView" /* the rest of config */} [,position])

Have a look at the example. This is a Jet class view with a small Webix form:

// views/start.js
import {JetView} from "webix-jet";
export default class StartView extends JetView {
config(){
return {
view:"form", width:300, elements:[
{ view:"button", value:"Add a button" }
]
};
}
}

Let's dynamically add a button and define a class method changeView for that. To reference the Webix form from the method, use this.getRoot(), where this is the Jet class view and getRoot returns the form.

// views/start.js
import {JetView} from "webix-jet";
export default class StartView extends JetView {
config(){
return {
view:"form", width:300, elements:[
{ view:"button", value:"Add a button", click: () => {
this.changeView();
} }
]
};
}
changeView(){
this.getRoot().addView({
$scope: this,
view:"button",
value:"Added"
});
}
}