Я задаю этот вопрос, потому что я не совсем ясно, как думать о rootscope как зависимость передается директиве
У меня есть директива, которая должна отображать некоторую информацию от $ rootScope ...
Я думал, что мне нужно передать $ rootScope в директиву, но когда я пишу такую директиву, похоже, она работает.
.directive("myBar", function() {
return {
restrict: "E",
transclude: true,
replace: true,
template: '<div>' +
'<span ng-transclude></span>' +
'{{rsLabels.welcome}} {{rsUser.firstName}}!' +
'</div>'
}
})
Когда мне нужно, чтобы это сделать?
.directive("myBar", function ($rootScope) {
return {
restrict: "E",
transclude: true,
replace: true,
template: '<div>' +
'<span ng-transclude></span>' +
'{{rsLabels.welcome}} {{rsUser.firstName}}!' +
'</div>'
}
})
Могу ли я и как я могу использовать rootScope, если мне это нужно в функции связи директивы - или я должен делать это в контроллере директивы?
.directive("myBar", function ($rootScope) {
return {
restrict: "E",
transclude: true,
replace: true,
link: function (scope, element, attrs, rootScope) {
rootScope.rsUser = { firstName: 'Joe' };
rootScope.rsUser = { welcome: 'Welcome' };
},
template: '<div>' +
'<span ng-transclude></span>' +
'{{rsLabels.welcome}} {{rsUser.firstName}}!' +
'</div>'
}
})
Мои данные rootScope определяется в режиме выбега
.run(function ($rootScope) {
$rootScope.rsLabels = {
welcome: 'Welcome'
};
$rootScope.rsUser = {
firstName: 'Joe'
};
});
Спасибо!
ах! Я понимаю. Как отметил Курт, это не лучший способ установить свойства приложения в угловом, но мне нужно понять rootScope, и это объясняет это лучше. Спасибо. Вы случайно не знаете, как получить доступ к $ root-области в функции ссылки директивы? – GRowing
Вам нужно думать, что $ rootScope является глобальным пространством имен, и вы хотите избежать его загромождения. Вы можете ввести его в свою директиву, но вся суть директив - быть компонентом без слишком большого количества внешних зависимостей. Если вам нужно что-то из $ rootScope, вы можете рассмотреть возможность его рефакторинга в службу. –
Это имеет смысл. Я полагаю, что я прибегаю к использованию любого эквивалента kin dof, эквивалентного глобальным, из-за того, что вы всегда делаете данные x доступными и не знаете, как еще подойти к нему. Я использую localStorage для некоторых вещей, но теперь смотрю на cacheFactory и расширенную версию, и как они используют localstorage, я вижу свет. Благодаря! – GRowing