当我单击禁用的复选框时,我想调用一种显示警告烤面包机的方法。
这是我的代码:
class DatePage(resource.Resource):
def __init__(self, date_string):
resource.Resource.__init__(self)
self.date_str = str(date_string)
def render_GET(self, request):
request.responseHeaders.addRawHeader(b"content-type", b"application/json")
return get_json().encode('utf-8')
class PageFactory(resource.Resource):
def getChild(self, date_string, request):
return DatePage(date_string)
class ControlThread(threading.Thread):
def __init__(self, control_queue, stop_event):
threading.Thread.__init__(self)
self.control_queue = control_queue
self.stop_event = stop_event
self.site = server.Site(PageFactory())
self.port = reactor.listenTCP(host_port, self.site)
reactor.startRunning(False)
def run(self):
while not self.stop_event.is_set():
try:
self.process_command(self.control_queue.get_nowait())
reactor.iterate()
except queue.Empty:
pass
time.sleep(0.001)
reactor.iterate()
sys.stderr.write("reactor.stop()\n")
self.port.stopListening()
reactor.callFromThread(reactor.stop)
# reactor_thread.join()
while reactor.running:
print("running")
time.sleep(0.1)
if not reactor.running:
print("STOPPED!!")
TypeScript代码:
<label>
<input type="checkbox" checked="checked"
[(ngModel)]="myCheckbox"
[disabled]="!hasCar"
(change)="noCarToastr()"/>
</label>
答案 0 :(得分:0)
您无法在禁用的元素上触发javascript事件。在label
元素上添加点击侦听器。
<label (click)="noCarToastr()">
<input type="checkbox" checked="checked"
[(ngModel)]="myCheckbox"
[disabled]="!hasCar"
(change)="noCarToastr(); $event.stopPropagation()"/>
Car
</label>
答案 1 :(得分:0)
不使用@Output(change),而是使用@Output(click),因为更改仅在输入值更改时触发。
<label>
<input type="checkbox" checked="checked"
[(ngModel)]="myCheckbox"
[disabled]="!hasCar"
(click)="noCarToastr()"/>
</label>
我建议您使用棱角材质,因为它可以提供其他更直观的选择。
希望这会有所帮助,
答案 2 :(得分:0)
Disabled元素不会触发鼠标事件,因此除了禁用该功能之外,还请仅基于hasCar
属性值阻止单击操作,这将阻止选中该复选框。为防止该操作,请使用Event
参考和Event#preventDefault
方法。
模板:
<label for="abc">test
<input id="abc" type="checkbox" checked="checked"
[(ngModel)]="myCheckbox"
(click)="noCarToastr($event, hasCar)"
/>
</label>
组件:
noCarToastr(event: Event) {
let me = this;
if (!this.hasCar) {
event.preventDefault()
me.toastr.warning("No Car Available");
}
}