В Dart Angular, как передавать функции компоненту

У меня есть компонент MyComp, и я хотел бы передать ему функцию в качестве параметра. Точнее, хотелось бы сделать что-то подобное:

файл компонента dart:

 @NgComponent(
        selector: 'mycomp',
        publishAs: 'ctrl',
        map: const {
          'myfunc' :'=> myfunc'
        }
    )
class MyComponent {
   Function myfunc;

   ....
   myfunc();
}

html:

<mycomp myfunc="ctrl.myfunc"></button-list>

Проблема в том, что myfunc в компоненте имеет значение null. Я что-то упускаю? Как я могу это сделать?


person odwl    schedule 07.12.2013    source источник


Ответы (2)


Используйте '&' для привязки функции к полю:

@NgComponent(
    selector: 'mycomp',
    publishAs: 'ctrl',
    map: const {
      'myfunc' :'&myfunc'
    }
)
class MyComponent {
    Function myfunc;

   ....
   myfunc();
}

http://ci.angularjs.org/view/Dart/job/angular.dart-master/javadoc/angular.core/NgComponent.html#map

person Ozan    schedule 07.12.2013
comment
Здорово. Чтобы передать параметр, это что-то более простое, чем myfunc ({'\ $ myparam': xyz} с html, имеющим значение ‹mycomp myfunc = 'ctrl.func ($ myparam)'›? - person odwl; 08.12.2013
comment
Хм, вы хотите передать параметр в mycomp при привязке функции или из mycomp при вызове myfunc? - person Ozan; 08.12.2013
comment
Я хочу передать параметр при вызове myfunc. - person odwl; 08.12.2013
comment
Просто назовите ее, как любую другую функцию. При привязке в html просто напишите ‹mycomp myfunc = 'ctrl.func'›. Подсказка: '$' в идентификаторах зарезервирован для членов, специфичных для angular. - person Ozan; 08.12.2013
comment
Чтобы передать параметры, вам нужно будет передать locals область видимости при вызове функции: myfunc({'param1': paramVal1, 'param2': paramVal2}); и при привязке <mycomp myfunc='ctrl.myfunc(param1, param2)'> - person pavelgj; 09.12.2013
comment
При вызове функции необходимо использовать ‹mycomp myfunc = 'ctrl.func ()'› - person alearg; 04.01.2014
comment
... и параметры должны быть картами - person alearg; 04.01.2014

Предпочтительный способ в AngularDart - использовать аннотации.

@NgCallback('myfunc') Function myFunc;
person Günter Zöchbauer    schedule 07.12.2013