Я создаю директиву, которая будет отображать и показывать контент, прослушивая событие $ routeChangeError на $ rootScope.angular.js директива templateUrl не удается связать область
Я получил все это работать на встраивание шаблон, как это:
app.directive("alert", function ($rootScope) {
'use strict';
return {
restrict: "E",
replace: true,
template: '<div class="alert alert-warning alert-dismissable" ng-show="isError">'
+ '<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>'
+ '{{ message }}'
+ '</div>',
//templateUrl: 'views/alert.html',
link: function (scope) {
$rootScope.$on("$routeChangeError", function (event, current, previous, rejection) {
scope.isError = true;
scope.message = rejection;
});
}
};
});
Но заменить шаблон templateUrl (как я комментировал в данном примере), не работает. Шаблон загружается, но привязка не работает.
В консоли нет ошибок.
Я играл с различными настройками директивы, но не смог заставить его работать. Я подумал, может быть, я должен был требовать ngShow, но когда я пытаюсь что я получаю сообщение об ошибке $ компиляции:
Error: [$compile:ctreq] http://errors.angularjs.org/undefined/$compile/ctreq? p0=ngShow&p1=ngShow
at Error (<anonymous>)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:6:453
at r (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:46:477)
at S (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:49:341)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:55:213
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:66:72
at C (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:91:121)
at C (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:91:121)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:92:288
at g.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:100:198) <div class="alert alert-warning alert-dismissable ng-binding" ng-show="{{isError}}">
Я думал, может быть, я должен был использовать параметр области действия, но я не понимаю, как. Я нашел документацию немного запутанной.
Есть ли я на правильном пути?
могли бы вы предоставить скрипку? –
(http://jsfiddle.net/wq35d/1/) - Я не очень хорошо знаком с тем, чтобы работать в jsFiddle, поэтому этот пример не запускается, возможно, вы можете это исправить. Также я не уверен, что правильно передаю $ routeChangeError (в моем проекте он запускается после неудачного разрешения на маршруте). –
Я обновил вашу скрипку, чтобы она работала: http://jsfiddle.net/wq35d/3/ Посмотрите, можете ли вы либо настроить ее, чтобы воспроизвести вашу проблему, либо, возможно, это даст вам некоторое представление. – KayakDave