Hàm dưới đây xác định một biến trong rootscope.không thể truy cập rootscope var trong phạm vi chỉ thị
function MyCtrl($scope, $rootScope) {
$rootScope.buttons = [{href: '#/students', icon:'icon-ok'},
{href: '#/students', icon:'icon-remove'},
{href: '#/students/new', icon:'icon-plus'}];
}
MyCtrl.$inject = ['$scope', '$rootScope'];
Các html trong chỉ thị dưới đây phụ thuộc vào một biến trong rootscope -
angular.module('btnbar.directive', []).
directive("btnBar", function(){
return {
restrict: 'E',
scope :{},
controller: function($scope, $element,$rootScope) {
},
template:'<div class="btn-toolbar">' +
'<a class="btn" ng-repeat="b in buttons" href={{b.href}}>' +
'<i class={{b.icon}}></i></a></div>',
replace:true
}
});
Tuy nhiên, công việc mã doesnt trên. Nó hoạt động nếu tôi trực tiếp xác định các 'nút' var trong phạm vi chỉ thị.
Jim nhờ trả lời tuyệt vời. Một câu hỏi tại sao tôi cần phải xác định các nút = "nút" trong thuộc tính của tôi. Ngoài ra nó làm gì? Tại sao wont mã hoạt động mà không có khai báo thuộc tính trên? – murtaza52
vì bộ điều khiển chỉ thị chấp nhận phạm vi, phần tử, thuộc tính và transclude, tham số thứ ba ur là $ rootScope mà thực sự là tham số thuộc tính. đây là mã điều khiển ur: chức năng ($ scope, $ element, $ rootScope). Bây giờ, hãy xem tài liệu http://docs.angularjs.org/guide/directive – AsadYarKhan
@AsadYarKhan Tôi nghĩ bạn đang nhầm lẫn bộ điều khiển với liên kết và biên dịch. – Usagi