Как передать $scope в angularjs 1.5 компонент/директива

Я пытаюсь использовать новый метод .component() в angular 1.5. В настоящее время я мало информации о том, как его использовать. Документы angular также не упоминают об этом.

Я пытаюсь передать область или объект из области действия в .component, который будет использоваться в части шаблона компонента, но только два параметра, которые я могу передать, - это $element и $attrs. Я пробовал передать объект через атрибут в html, но все, что я получил, было строкой имени объекта.

Я попытался настроить его таким образом как переменную

my-attr="item.myVal"
my-attr="{item.myVal}"
my-attr="{{item.myVal}}"

каждый раз, когда я все еще получаю строковый литерал, а не значение переменной. Как я могу настроить его для обработки как переменной?

Я попытался захватить данные с помощью новых привязок: {}, но мой шаблон: {} тогда не имел доступа к переменным.

Вот мой компонент, как сейчас:

export var ItemListAction = {
    controller: 'PanelCtrl as itemCtrl',
    isolate: false,
    template: ($element: any, $attrs: any): any=> {
        var myVal: any = $attrs.myAttr; // returns "item.myVal"
        var listAction: string = compileListAction();
        return listAction;
    }
};

Вот мой компонент в HTML

<panel-item-list-action my-attr="item.myVal"></panel-item-list-action>

Это объявление модуля angular для компонента: angular.module('Panel', []).component('panelItemListAction', ItemListAction)

Ответ 1

Шаблонам не требуется $scope. Функции шаблона возвращают HTML. Вы можете вставлять $scope в контроллер, как всегда.

Это то, что Блог AngularJS говорит о компонентах:

module.component

Мы создали более упрощенный способ регистрации директив компонентов. По сути, компоненты - это специальные типы директив, которые привязаны к пользовательскому элементу (что-то вроде <my-widget></my-widget>), с соответствующим шаблоном и некоторыми привязками. Теперь, используя метод .component() в AngularJS 1.5, вы можете создать повторно используемый компонент с очень небольшим количеством строк кода:

var myApp = angular.module("MyApplication", [])
myApp.component("my-widget", {
  templateUrl: "my-widget.html",
  controller: "MyWidgetController",
  bindings: {
    title: "="
  }
});

Чтобы узнать больше о компоненте AngularJS 1.5, прочитайте статью Тодда Мотто: http://toddmotto.com/exploring-the-angular-1-5-component-method/

- http://angularjs.blogspot.com/2015/11/angularjs-15-beta2-and-14-releases.html