Я работаю над книгой Learning Angular Js by Brad Dayley. В его примерах используется $scope
. Я подталкиваю себя к использованию controllerAs
. В седьмой главе книги основное внимание уделяется созданию пользовательских директив.Доступ к данным из родительского контроллера с контроллером как
Я создал простой, похожий на приведенный пример. Внутри я устанавливаю transclude в true. Я использую функцию ссылки для добавления нижнего колонтитула к родительскому div. Внутри тега нижнего колонтитула автор книги вызывает scope.$parent.title
В примере значение title
происходит от родительского контроллера.
.directive('myBox', function() {
return {
transclude: true,
restrict: 'E',
scope: {title: '@', bwidth: '@bwidth'},
template: "<div><span class='titleBar'>{{title}}"+ "</span> <div ng-transclude></div></div>",
link:function(scope, elem, attr, controller, transclude) {
console.log('scope', scope.$parent)
console.log('controller', controller);
elem.append('<span class="footer">'+ scope.$parent.title + '</span>');
elem.css('border', '2px ridge black');
elem.css('display', 'block');
elem.css('width', scope.bwidth);
}
}
})
Внутри книги контроллер использует $scope
, я хотел использовать controller as
и я использую vm
равным это. Вот моя функция для контроллера. Предполагается, что значение vm.title
будет значением на нижнем колонтитуле.
Я получаю undefined
с моей консоли, когда проверяю значение.
function FunCtrl() {
var vm = this;
vm.title = "myApplication";
}
Вот plunker того, что я пытаюсь
http://plnkr.co/edit/uUeKrTwLOfkcGpkTU1Uz?p=preview
Можете ли вы предоставить полный пример, показывающий вашу проблему? – LionC
Вот базовый плункер http://plnkr.co/edit/uUeKrTwLOfkcGpkTU1Uz?p=preview – Winnemucca