Angular 模块中的 js 指令无法正常工作
Angular js directive in module not working correctly
我有一个模块调用 "menuLeft",当他启动模块时,没有正确加载我的指令,但是如果 运行 我的函数 en el 方法 "run" 正确。
我不知道这是为什么。
这是我的代码
(function () {
angular.module('menuLeft', []);
angular.module('menuLeft')
.run(htmlMenuDirectivaGrupo)
.directive('ctrlMenuDirectivaGrupo', ctrlMenuDirectivaGrupo);
//MY MENU DIRECTIVE (THIS NOT LOAD)
//MENU GRUPO
/**
* @ngInject
*/
function ctrlMenuDirectivaGrupo($timeout) {
alert('hello ctrlmenu');
return {
scope: {
section: '='
},
templateUrl: 'partials/menuToogle.tmpl.html',
link: function ($scope, $element) {
var controller = $element.parent().controller();
$scope.isOpen = function () {
return controller.isOpen($scope.section);
};
$scope.toggle = function () {
controller.toggleOpen($scope.section);
};
}
};
}
//MY TEMPLATE FOR DIRECTIVE (THIS IF LOAD)
/**
* @ngInject
*/
function htmlMenuDirectivaGrupo($templateCache) {
alert('hello htmlmenu');
$templateCache.put('partials/menuToogle.tmpl.html',
'<md-button class="md-button-toggle"\n' +
' ng-click="toggle()"\n' +
' aria-controls="docs-menu-{{section.name | nospace}}"\n' +
' flex layout="row"\n' +
' aria-expanded="{{isOpen()}}">\n' +
' {{section.name}}\n' +
' <span aria-hidden="true" class=" pull-right fa fa-chevron-down md-toggle-icon"\n' +
' ng-class="{\'toggled\' : isOpen()}"></span>\n' +
'</md-button>\n' +
'<ul ng-show="isOpen()" id="docs-menu-{{section.name | nospace}}" class="menu-toggle-list">\n' +
' <li ng-repeat="page in section.pages">\n' +
' <menu-link section="page"></menu-link>\n' +
' </li>\n' +
'</ul>\n' +
'');
}
})();
为什么不加载两个函数?有错误的代码或声明?
谢谢。
Use something like this . .
return {
restrict: 'E',
scope: {
section: '='
},
controller: ['$scope', function ($scope){..}],
link: function (scope, element, attrs) {..},
template: '<div class="bootsrtap">'+
'<input type="text" ng-model="searchParam" placeholder="{{ attrs.placeholder }}"'+
'class="{{ attrs.inputclass }}"'+
'id="{{ attrs.inputid }}"'+
'ng-required="{{ autocompleteRequired }}" />'+
'</div> '
};
问题是,我的指令也没有在 .html 中正确声明
这是我们应该调用它才能正常运行的方式。
指令
(function () {
angular.module('menuLeft', []);
angular.module('menuLeft')
.run(htmlMenuDirectivaGrupo)
.directive('menuGrupo', ctrlMenuDirectivaGrupo);
//MY MENU DIRECTIVE (THIS NOT LOAD)
//MENU GRUPO
/**
* @ngInject
*/
function ctrlMenuDirectivaGrupo($timeout) {
alert('hello ctrlmenu');
return {
scope: {
section: '='
},
templateUrl: 'partials/menuToogle.tmpl.html',
link: function ($scope, $element) {
var controller = $element.parent().controller();
$scope.isOpen = function () {
return controller.isOpen($scope.section);
};
$scope.toggle = function () {
controller.toggleOpen($scope.section);
};
}
};
}
//MY TEMPLATE FOR DIRECTIVE (THIS IF LOAD)
/**
* @ngInject
*/
function htmlMenuDirectivaGrupo($templateCache) {
alert('hello htmlmenu');
$templateCache.put('partials/menuToogle.tmpl.html',
'<md-button class="md-button-toggle"\n' +
' ng-click="toggle()"\n' +
' aria-controls="docs-menu-{{section.name | nospace}}"\n' +
' flex layout="row"\n' +
' aria-expanded="{{isOpen()}}">\n' +
' {{section.name}}\n' +
' <span aria-hidden="true" class=" pull-right fa fa-chevron-down md-toggle-icon"\n' +
' ng-class="{\'toggled\' : isOpen()}"></span>\n' +
'</md-button>\n' +
'<ul ng-show="isOpen()" id="docs-menu-{{section.name | nospace}}" class="menu-toggle-list">\n' +
' <li ng-repeat="page in section.pages">\n' +
' <menu-link section="page"></menu-link>\n' +
' </li>\n' +
'</ul>\n' +
'');
}
})();
HTML
<menu-grupo></menu-grupo>
我推荐阅读https://github.com/johnpapa/angular-styleguide
谢谢大家。
我有一个模块调用 "menuLeft",当他启动模块时,没有正确加载我的指令,但是如果 运行 我的函数 en el 方法 "run" 正确。 我不知道这是为什么。 这是我的代码
(function () {
angular.module('menuLeft', []);
angular.module('menuLeft')
.run(htmlMenuDirectivaGrupo)
.directive('ctrlMenuDirectivaGrupo', ctrlMenuDirectivaGrupo);
//MY MENU DIRECTIVE (THIS NOT LOAD)
//MENU GRUPO
/**
* @ngInject
*/
function ctrlMenuDirectivaGrupo($timeout) {
alert('hello ctrlmenu');
return {
scope: {
section: '='
},
templateUrl: 'partials/menuToogle.tmpl.html',
link: function ($scope, $element) {
var controller = $element.parent().controller();
$scope.isOpen = function () {
return controller.isOpen($scope.section);
};
$scope.toggle = function () {
controller.toggleOpen($scope.section);
};
}
};
}
//MY TEMPLATE FOR DIRECTIVE (THIS IF LOAD)
/**
* @ngInject
*/
function htmlMenuDirectivaGrupo($templateCache) {
alert('hello htmlmenu');
$templateCache.put('partials/menuToogle.tmpl.html',
'<md-button class="md-button-toggle"\n' +
' ng-click="toggle()"\n' +
' aria-controls="docs-menu-{{section.name | nospace}}"\n' +
' flex layout="row"\n' +
' aria-expanded="{{isOpen()}}">\n' +
' {{section.name}}\n' +
' <span aria-hidden="true" class=" pull-right fa fa-chevron-down md-toggle-icon"\n' +
' ng-class="{\'toggled\' : isOpen()}"></span>\n' +
'</md-button>\n' +
'<ul ng-show="isOpen()" id="docs-menu-{{section.name | nospace}}" class="menu-toggle-list">\n' +
' <li ng-repeat="page in section.pages">\n' +
' <menu-link section="page"></menu-link>\n' +
' </li>\n' +
'</ul>\n' +
'');
}
})();
为什么不加载两个函数?有错误的代码或声明? 谢谢。
Use something like this . .
return {
restrict: 'E',
scope: {
section: '='
},
controller: ['$scope', function ($scope){..}],
link: function (scope, element, attrs) {..},
template: '<div class="bootsrtap">'+
'<input type="text" ng-model="searchParam" placeholder="{{ attrs.placeholder }}"'+
'class="{{ attrs.inputclass }}"'+
'id="{{ attrs.inputid }}"'+
'ng-required="{{ autocompleteRequired }}" />'+
'</div> '
};
问题是,我的指令也没有在 .html 中正确声明 这是我们应该调用它才能正常运行的方式。
指令
(function () {
angular.module('menuLeft', []);
angular.module('menuLeft')
.run(htmlMenuDirectivaGrupo)
.directive('menuGrupo', ctrlMenuDirectivaGrupo);
//MY MENU DIRECTIVE (THIS NOT LOAD)
//MENU GRUPO
/**
* @ngInject
*/
function ctrlMenuDirectivaGrupo($timeout) {
alert('hello ctrlmenu');
return {
scope: {
section: '='
},
templateUrl: 'partials/menuToogle.tmpl.html',
link: function ($scope, $element) {
var controller = $element.parent().controller();
$scope.isOpen = function () {
return controller.isOpen($scope.section);
};
$scope.toggle = function () {
controller.toggleOpen($scope.section);
};
}
};
}
//MY TEMPLATE FOR DIRECTIVE (THIS IF LOAD)
/**
* @ngInject
*/
function htmlMenuDirectivaGrupo($templateCache) {
alert('hello htmlmenu');
$templateCache.put('partials/menuToogle.tmpl.html',
'<md-button class="md-button-toggle"\n' +
' ng-click="toggle()"\n' +
' aria-controls="docs-menu-{{section.name | nospace}}"\n' +
' flex layout="row"\n' +
' aria-expanded="{{isOpen()}}">\n' +
' {{section.name}}\n' +
' <span aria-hidden="true" class=" pull-right fa fa-chevron-down md-toggle-icon"\n' +
' ng-class="{\'toggled\' : isOpen()}"></span>\n' +
'</md-button>\n' +
'<ul ng-show="isOpen()" id="docs-menu-{{section.name | nospace}}" class="menu-toggle-list">\n' +
' <li ng-repeat="page in section.pages">\n' +
' <menu-link section="page"></menu-link>\n' +
' </li>\n' +
'</ul>\n' +
'');
}
})();
HTML
<menu-grupo></menu-grupo>
我推荐阅读https://github.com/johnpapa/angular-styleguide
谢谢大家。