Wenn ich Schaltfläche klicken #btn1
oder #btn2
Speicher, sagt die Konsole, dass:nicht Funktion im Hinblick Modell von <content> Elemente nennen kann
Uncaught Error: save is not a function
getFunction @ aurelia-binding.js:1971
evaluate @ aurelia-binding.js:1565
callSource @ aurelia-binding.js:4989
(anonymous function) @ aurelia-binding.js:5013
handleDelegatedEvent @ aurelia-binding.js:3211
Aber die äußere Taste #btn3
gut funktioniert. Ich versuche auch $parent.save()
in #btn2
, aber es ist nicht funktionieren. Irgendeine Idee?
app.html
<create-location contact.two-way="contact" working-time.two-way="workingTime">
<require from="dist/component/working-time"></require>
<working-time title="Working Time" view-model.ref="workingTime"></working-time>
<require from="dist/component/contact"></require>
<contact title="Contact" phone="123" email="[email protected]" fax="123456" view-model.ref="contact"></contact>
<button id="btn1" type="button" click.delegate="save()">Save (=>error<=)</button>
<button id="btn2" type="button" click.delegate="$parent.save()">Save (=>error also<=)</button>
</create-location>
create-location.html
<template>
<button id="btn3" type="button" click.delegate="save()">Save (=>it works<=)</button>
<content></content>
</template>
create-location.js
import {bindable} from 'aurelia-framework'
export class CreateLocationCustomElement {
@bindable contact;
@bindable workingTime;
save() {
alert("save");
}
}
Update Ich versuchte Fabio suggest und it works.
Eine andere Frage: Sehen Sie sich aurelia dialog, rufen sie testDelegate
Funktion Sicht-Modell innerhalb <content>
Element ähnlich wie mein Fall. Sie verwenden view-model.ref
nicht. Ich schaue mir den Quellcode an, aber ich finde nicht heraus, wo sie diesen Aufruf verarbeiten. Vielleicht verpasse ich einen Punkt oder sind hier Konventionen. Weiß jemand, wie sie das machen?
Da create-location Seite ist eine Pre-Render-Seite auf dem Server und ich will, dass aurelia Kontrolle über die ganze Seite im Browser (um Bindung, benutzerdefinierte Komponente, ...) zu verwenden, so ich create-location-Komponente und verwenden Sie die Aurelia-Funktion ([siehe hier] (https://gist.run/?id=bd69d7b81db72ce2f158819113c88f2d)). Ich frage mich, ob das ein richtiger Weg ist oder nicht. Hast du jemals so etwas gemacht? Btw, werfen Sie einen Blick auf [Aurelia Dialog] (https://github.com/aurelia/dialog). Sie haben eine "testDelegate" -Funktion, aber ich weiß nicht, wie das geht. Sie verwenden 'view-model.ref' überhaupt nicht. – drakid