2016-04-05 2 views
0

На данный момент пытается написать код в стиле Angular2, т. Е. Без использования контроллеров. Столкнувшись с проблемой передачи данных из внешней и внутренней директивы. Как это сделать правильно? Главный вопрос заключается в том, как внутри директивы обращаться к внешней области и использовать данные в шаблоне внутренних директив? Пример on codepenAngularjs. Область наследования в вложенной директиве

<test-directive> 
    <nested/> 
</test-directive> 

ответ

0

я упростил вам codepen см мой модифицированный version.

class Nested { 
    restrict='E'; 
    template='<p>Nested {{inner.outer}} {{inner.last}}</p>'; 
    controller=function(){ 
    this.last='Pupkin'; 
    }; 
    controllerAs='inner'; 
    bindToController={ 
    outer: '=' // a communicating point of outer and inner directives 
    }; 
} 

Дело в том, что в bindToController, вы можете добавить конечной переменной, так как outer здесь. И во внешнем шаблоне дайте ему значение: <nested outer="outer.first"/>.

@ ответ Гюнтера Zöchbauer является для углового 2.

Кроме того, если вы хотите увидеть весь пример использования стиля компонента с Angualr 1, вы можете увидеть мой express-angular-es6-starter, A TODO MVC с ES6 и стилем компонента Угловые коды 1.

+0

Спасибо! Я знал что-то вроде этого, но я думаю, что это довольно много времени, или я все равно ошибаюсь? – powerman23rus

+0

И вы можете объяснить, когда использовать bindsToController? Потому что я пишу это в каждой директиве, правильно? Я заметил, что вы используете его как объект, и я думал, что это переменная is boolean ... – powerman23rus

+0

И можно ли связать прошлое и будущее с помощью ng-transclude? например, доступ к значениям ползунка «max» и «min» в весле? Как в этом -> [шаблон] (http://codepen.io/powerman23rus/pen/RaxaEP) <- link – powerman23rus

0

Вы должны передать значения явно

<test-directive> 
    <nested [someInput]="somePropertyOnParent"></nested> 
</test-directive> 
@Component({ 
    selector: 'nested', 
    template: `<ng-content></ng-content>`)} 
class Nested { 
    @Input() someInput; 

    ngOnInit() { 
    console.log(this.someInput); 
    } 
} 
+0

Это решение Angulyar 2, но я должен сделать то же самое, только используя Angular1! Но спасибо в любом случае) – powerman23rus

Смежные вопросы