Привет, Я пытаюсь изучить директивы AngularJS, и я пришел очень близко, но хотел бы расширить свое обучение, очистив и удалив код моей директивы.Директивы в AngularJS
Директива:
app.directive('ngSparkline', function() {
var url = "http://api.openweathermap.org/data/2.5/forecast/daily?mode=json&units=imperial&cnt=14&callback=JSON_CALLBACK&q=";
return {
restrict: 'A',
require: '^ngCity',
transclude: true,
scope: {
ngCity: '@'
},
templateUrl: 'app/partials/weatherTemplate.html',
controller: ['$scope', '$http', function($scope, $http) {
$scope.getTemp = function(city) {}
}],
link: function (scope, iElement, iAttrs) {
scope.getTemp(iAttrs.ngCity);
scope.$watch('weather', function (newVal) {
if (newVal) {
var highs = [];
angular.forEach(scope.weather, function (value) {
highs.push(value.temp.max);
});
chartGraph(iElement, highs, iAttrs);
}
});
}
};
});
Как вы можете видеть, я не пытаюсь написать встроенный шаблон, а используйте templateUrl. Теперь проблема в контроллере, когда я пытаюсь использовать .js-контроллер вместо написания встроенного кода контроллера, я получаю сообщение об ошибке. Как мне это достичь.
Я пробовал:
Я попытался прохождения
controller: '@',
name: 'ctrl'
и я передаю 'Ctrl', как:
<div ng-sparkline ng-city="San Francisco" ctrl="weatherController"></div>
это дает мне контроллер не найден. Моя структура проекта - это что-то вроде ниже.
- Что я делаю неправильно?
- Есть ли лучший/правильный способ сделать это?
Просьба предложить.
Примечание: Я учусь это упражнение с «http://www.ng-newsletter.com/posts/directives.html»
Является ли ваш контроллер правильно ли указано в приложении? Как вы включили его в свой скрипт refs или bundle? – lintmouse
, вы должны фактически передать имя контроллера непосредственно в свойство 'controller' в директиве, точно так же, как вы указали путь к свойству' templateUrl'. Директива должна владеть и находиться под непосредственным контролем своего Контролера. Для потребителя никогда не бывает подходящим или полезным, чтобы он сам предоставлял или управлял Контролером для самой директивы; Контроллер должен придерживаться всей логики, используемой директивой, и не должен зависеть от потребителя, чтобы обеспечить эту логику. – Claies
@Claies Я попытался передать контроллер i.e. app/controllers/mycontroller.js и выбрасывает недопустимую ошибку. – Immortal