Tôi có một ứng dụng mà tôi đang xây dựng với góc, tôi có khoảng 8-10 điểm để xây dựng ra. Tất cả các chế độ xem đều có chân trang được chia sẻ, dựa trên chế độ xem và một bộ quy tắc kinh doanh tôi cần phải hiển thị/ẩn một số nội dung trên chân trang có điều kiện.AngularJS: ng-bao gồm và ng-controller
So. Tôi có bộ điều khiển cho mỗi chế độ xem và sau đó một bộ điều khiển cho chân trang. Tôi bao gồm bố cục chân trang chung sử dụng ng-include, trong đó html tôi bao gồm tham chiếu bộ điều khiển chân trang trong bộ điều khiển ng.
index.html
<body ng-controller="MainCtrl as vm">
<p>Message from Main Controller '{{vm.mainMessage}}'</p>
<div ng-include="'commonFooter.html'"></div>
</body>
commonFooter.html
<div ng-controller="FooterCtrl as vm">
<p>Message from Footer Controller '{{vm.message}}'</p>
<p ng-show="vm.showSomthing">Conditional footer Content</p>
</div>
Tôi muốn mỗi bộ điều khiển xem để xác định trạng thái của chân và liệu nội dung cụ thể là ẩn hay không. (shouldDisplaySomthingInFooter bên dưới)
app.controller('MainCtrl', function($scope) {
var vm = this;
vm.mainMessage= 'HEELO';
vm.shouldDisplaySomthingInFooter = true;
window.console.log('Main scope id: ' + $scope.$id);
});
Sau đó, tôi đã có ý định rằng trong FooterController sẽ đạt trở lại vào bộ điều khiển phụ huynh và kéo ra các thiết lập cụ thể để cho phép/vô hiệu hóa nội dung dựa trên các quy tắc kinh doanh.
app.controller('FooterCtrl', function($scope) {
var vm = this;
vm.message = 'vm footer';
window.console.log('Footer scope id: ' + $scope.$id);
window.console.log('Footer parent scope id: ' + $scope.$parent.$id);
window.console.log('Footer grandparent scope id: ' + $scope.$parent.$parent.$id);
window.console.log('Footer grandparent scope name: ' + $scope.$parent.$parent.mainMessage);
window.console.log('Footer grandparent scope condition: ' + $scope.$parent.$parent.shouldDisplaySomthingInFooter);
vm.showSomthing = false; //how to pull from parent scope to bind the ng-show to a value set in the parent from within a ng-include?
});
Tôi có ví dụ này ở đây: http://plnkr.co/edit/ucI5Cu4jjPgZNUitY2w0?p=preview
Những gì tôi đang tìm kiếm là tôi khi tôi đạt được vào phạm vi cha mẹ phải rút ra khỏi nội dung nó sẽ trở lại như không xác định, và tôi không chắc chắn tại sao.
Tôi có thể thấy rằng các phạm vi được lồng vào cấp độ ông bà bằng cách kiểm tra phạm vi, tôi tin rằng điều này là do ng-include thêm một lớp phạm vi bổ sung bên dưới phạm vi xem.
Thêm điểm: Nếu tôi không thể phải sử dụng các đối tượng $ phạm vi và có thể gắn bó với var vm = this;
cách để làm việc đó đó sẽ là một lợi thế. Nhưng người ăn xin không thể được chọn canh :)
app.controller('MainCtrl', function($scope) {
var vm = this;
Cảm ơn bạn rất nhiều trước.