[FONT="Open Sans",Helvetica-Neue,Arial,sans-serif]T
he bind expression for the text property reads "
'{userName ? "Save: " + userName : "Save"}'
" as a text and not an expression. I copy and pasted the Main.js in this step and had the result. A simple bind expression works, but a more complex bind expression does not work. My Main.js is copied below. If you would like to me to copy any other files, let me know.

Ext.define('MyApp.view.main.Main', {
extend:'Ext.tab.Panel',
controller:'main',

requires: [
'Ext.Button',
'Ext.field.Text'// <<== added
],

viewModel: { // <<== added
data: {
userName:''
}
},

items: [{
title:'Home',
html:'<h1 class="main-banner">Hello World!<h1>',
items: [{
xtype:'textfield', // <<== added
label:'User name',
bind:'{userName}'
}, {
xtype:'button',
handler:'onGo',
bind: { // <<== added
disabled:'{!userName}',
text:'{userName ? "Save: " + userName : "Save"}'
}
}]
}, {
title:'Notifications'
}, {
title:'Settings'
}]
});


[/FONT]