'binding' (not bing!!)

On Friday, 23 October 2015 21:15:21 UTC+1, Steve Fowler wrote:
>
> Hi
>
> I'm playing around with Angular 2 trying to make my own input component. 
> I've come up with this so far
>
> import {Component, FORM_DIRECTIVES, Input, Output, View, EventEmitter } 
> from 'angular2/angular2';
>
> @Component({
>     selector: 'foxyInput',
>     events: ['change']
> })
> @View({
>   template: '<input [(ng-model)]="model" (keyup)="onChange($event)" 
> (change)="onChange($event)" >',
>     directives: [FORM_DIRECTIVES]
> })
> export class foxyInput{
>     @Input() model: String;
>     @Output() change = new EventEmitter();
>     
>     onChange(event) {
>         this.change.next(event.target.value);
>     }
> }
>
> and in the main app ....
>
> import {bootstrap, Directive, Component, CORE_DIRECTIVES, Input, View, 
> Attribute} from 'angular2/angular2';
> import {foxyInput} from './foxy-input';
>
>
> @Component({
>     selector: 'my-app',
> })
> @View({
>   template: `
>   <foxyInput model="{{test}}" (change)="onChange($event)"></foxyInput>
>   {{test}}
>   `,
>   directives: [foxyInput]
> })
> class AppComponent{
>   test: String;
>   
>   constructor() {
>     this.test = "some text";
>   }
>   
>   onChange(event) {
>     this.test = event;
>   }
> }
> bootstrap(AppComponent);
>
> It actually all works and the onChange function is firing when the text is 
> changed in the component, returning the new text value back to 'test' in 
> the main app.
>
> However, if I add 10 input components I don't want to have to create 10 
> onChange events to capture the change. Is there an easier way of achieving 
> it?
>
> Thanks
>
> Steve
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to