我正在通過Brad Dayley編寫的「學習Angular Js」一書。該書在其例子中使用$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";
}
這裏是我試圖
http://plnkr.co/edit/uUeKrTwLOfkcGpkTU1Uz?p=preview
你能提供一個完整的例子來展示你的問題嗎? – LionC
這裏是一個基本的plunker http://plnkr.co/edit/uUeKrTwLOfkcGpkTU1Uz?p=preview – Winnemucca