我有一个自发停止工作的指令.出于某种原因,它永远不会在控制台中打印出错误.这很奇怪,因为其他指令(看起来几乎相同)正在发挥作用(参见工作指令的最后一篇).
这是指令:
- angular.module('popup').directive('popup',['Locator','PopupService',// This line of code is reached
- function(Locator,PopupService) {
- return {
- restrict: 'A',scope: {
- "show": '=',"anchor": '=','direction': '='
- },link: function($scope,element,attr) { // This never called
- $scope.$watch('show',function(newValue,oldValue) {
- if (newValue) { // This is never called
- var pos = Locator.getCenterPosition($($scope.anchor));
- PopupService.togglePopup($(element),{
- x: pos.x,y: pos.y,origin: $scope.direction,remove_callback: function() {
- $scope.show = false;
- console.log("SHOW: " + $scope.show);
- }
- });
- } else {
- autoHide();
- }
- },true);
- }
- };
- }
- ]);
这是包含指令的Jade代码(Jade是一种html模板语言.):
- block total-content
- .div {{ edit }}
- .main-body(ng-controller="editEditorController" ng-init="popups = {};format.colorMode='W'; draftID='#{draftID}'; draftEditorID='#{draftEditorID}'; draftOwnerID='#{draftOwnerID}' ")
- div {{ commentEditor }}
- ul#left-tool-list.side-tool-list.tool-list()
- li#comments-tool-Box
- span.tool-Box-title Comments
- span.tool-Box-control-area
- #tool-Box-controls
- span#comment-button.tool-Box-button(ng-click="newComment()") Add Comment
- span#view-comments-button.tool-Box-button(ng-init="popups.showCommentPopup = false" ng-click="popups.showCommentPopup = true; $event.stopPropogation();" stop-event='click') View Comments
- div#comment-list-container(popup show="popups.showCommentPopup" anchor="'#view-comments-button'" direction="'top'") // The directive in question
- comment-displayer#comment-list(edit="edit")
这是应用程序的声明:
- var editEditorApp = angular.module('editEditorApp',['general','API','popup']);
这是包含的顺序:
- /* App */ script(src='/js/angular/editEditor/editEditorApp.js')
- /* JQuery */ script(src='/js/pxem.JQuery.js')
- /* Plain JS */ script(src='/styles/js/window-height.js')
- /* Tinymce */ script(src='/js/ice_tinymce/tinymce/jscripts/tiny_mce/tiny_mce.js')
- /* JQuery dep. */ script(src='/js/jquery.browser.min.js')
- /* Angular Module - factory */ script(src='/js/angular/api/api.js')
- /* Angular Module - directives */ script(src='/js/angular/directives/general.js')
- /* Angular Module - popup (services) */ script(src='/js/angular/general/popupService.js')
- /* Angular Module - popup (directive) */ script(src='/js/angular/directives/popup.js')
- /* Angular Module */ script(src='/js/angular/filter/cut.js')
- /* Angular Module - factory */ script(src='/js/angular/editEditor/commentLikeCreator.js')
- /* Angular Module - factory */ script(src='/js/angular/editEditor/autoSave.js')
- /* Angular Module - directives */ script(src='/js/angular/editEditor/commentBox.js')
- /* Angular Module - directives */ script(src='/js/angular/editEditor/editor.js')
该指令正在运行,但我不知道为什么:
- editEditorApp.directive('commentBox',function(PopupService) {
- return {
- restrict: 'E',templateUrl: "/partials/edit-comment-Box",replace: true,scope: {
- "comment": '=',"onDelete": '=',"onHide": '=',"location": '=',"show": '='
- },attr) {
- console.log("LINK POPUP");
- $scope.$watch('show',oldValue) {
- console.log("NEW VALUE: " + newValue);
- if (newValue) {
- console.log("SHOW!");
- $scope.popup = PopupService.popPopup($(element),{
- x: location.x,y: location.y,origin: 'bottom',hideOthers: true,remove_callback: function() {
- $scope.show = false;
- console.log("SHOW: " + $scope.show);
- }
- });
- } else {
- if ($scope.popup) {
- $scope.popup.removePopup();
- }
- }
- });
- },controller: function($scope) {
- console.log("CONTROLLER");
- $scope.delete = function() {
- $scope.popup.removePopup();
- if ($scope.onDelete) {
- $scope.onDelete();
- }
- };
- $scope.hide = function() {
- $scope.popup.removePopup();
- if ($scope.onHide) {
- $scope.onHide();
- }
- };
- }
- };
- }
- );
注意:此问题以前是在一个不同的问题下发布的,但我现在意识到它不是指令的“监视”部分被破坏,但该指令从未被调用过.我删除了上述问题并发布了这个问题.
解决方法
请注意您在第一个模块中使用模块的区别以及第二个模块中模块的声明和用法.
在第一个不工作的地方,你没有任何依赖.即使你没有,只需放一个空数组.
- angular.module('popup',[]).directive('popup',true);
- }
- };
- }
- ]);