Hope you’re doing well @hhaensel
It’s really useful to bind properties of quasar-vue components to model parameters. More specifically, how do I disable a button with an observable:
button("Save", @click("save=true"), disable = :disable_save)
where disable_save
is a parameter in the model. My goal is to allow the user to save if and only if some conditions are met…
That should do it. Didn’t you try?
I thought so too. No, it didn’t work. But I’ll try it again, just to be 110% sure.
Yea, it doesn’t work… MWE:
using Stipple, StippleUI
using Genie.Renderer.Html
Base.@kwdef mutable struct JSmethods <: ReactiveModel
save::R{Bool} = false
disable_save::R{Bool} = false
end
function restart()
global model
model = Stipple.init(JSmethods(), debounce=1)
end
function ui()
app = dashboard(vm(model),
[
heading("jsmethods"),
row(cell(class="st-module", [
p(button("Save", @click("save=true"), disable = :disable_save)),
])),
], title = "jsmethods")
html(app)
end
route("/", ui)
Genie.config.server_host = "127.0.0.1"
restart()
up(open_browser = true)
if you try
julia> model.disable_save[] = true
true
julia> model.save
Observable{Bool} with 1 listeners. Value:
false
and then press on the Save
button, you’ll see that:
julia> model.save
Observable{Bool} with 1 listeners. Value:
true
It’s a typo, should be disabled=:disable_save
Ah… Just FYI, in the docs Button | Quasar Framework it says disable
:
And you are right, works on my side.
It’s because you use button
and not btn
, see also here
hhaensel:
button
and not btn
Oh, should I be using btn
instead? What’s the difference?
The first one is a native html element, the latter one is a quasar component. I would always use quasar components, as their layout is far superior (e.g. greyed when disabled) and better customisable.
1 Like