У меня есть настраиваемая директива, которая загружает блок навигации из вызова webservice. Я пытаюсь щелкнуть по одной из этих ссылок навигации, в которую я помещаю «ng-click». Я пытаюсь щелкнуть ссылку, которая должна вызывать функцию, называемую внутри ng-click. Эта функция должна выполняться, но это не так.AngularJS ng-click не вызывающая функция в области
Вот маршрутизации
var cartangularPublicShoppingApp = angular.module('cartangularPublicShoppingApp', [
'ngRoute',
'CategoriesController',
'CategoryServices',
'CategoryNavigationServices',
'MenuModule'
]);
cartangularPublicShoppingApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/cart', {
templateUrl: 'partials/public/cart.html',
controller: 'CartCtrl'
}).
when('/categories/:categoryId', {
templateUrl: 'partials/public/categories.html',
controller: 'CategoriesController'
}).
otherwise({
redirectTo: '/categories'
});
}]
);
Вот мой обычай директиве
angular.module('MenuModule', [])
.directive('myCustomer', function() {
return {
restrict: 'E',
templateUrl: './partials/public/customer.html',
controller: function($scope, $sce, CategoryNavigationService) {
var z = CategoryNavigationService.getCategoryNavigation().success(function(data){
$scope.categoryNavigation = data;
var navHTML = createCategoryNavigationBar(data);
var t = $sce.trustAsHtml(navHTML);
$scope.panes = t;
}).error(function(data){
var error = "Get confident, stupid!";
var t = $sce.trustAsHtml(error);
$scope.panes = t;
});
function createCategoryNavigationBar(categoryNavigation){
var test = "";
var categoryId;
var catNavArray = categoryNavigation.categoryNavigationArray;
for(categoryId in catNavArray){
var currentCategoryNavigation = categoryNavigation.categoryNavigationArray[categoryId];
var string = '<li> <a href="javascript:void(0);" name="categoryId" ng-click="getProductsForCategory()">' + currentCategoryNavigation.categoryName + "</a>";
test = test + string;
var count = 0;
var countingNavArr = currentCategoryNavigation.categoryNavigationArray;
for(var countingObject in countingNavArr){
count++;
}
if(count > 0){
var innerCategoryId;
test = test + "<ul>";
for(innerCategoryId in currentCategoryNavigation.categoryNavigationArray){
var innerCategoryNavigation = currentCategoryNavigation.categoryNavigationArray[innerCategoryId];
var innerTest = createCategoryNavigationBar(innerCategoryNavigation);
test = test + innerTest;
}
test = test + "</ul>";
}
test = test + "</li>";
}
test = '<ul id="menu">' + test + '</ul>';
return test;
}
}
};
});
Вот контроллер, который получает это направляется на мой HTML-фрагмент, который я показываю директиву в.
var categoriesControllers = angular.module('CategoriesController', []);
categoriesControllers.controller('CategoriesController', ['$scope', '$routeParams' , '$location', 'CategoryService',
function($scope, $routeParams, $location, CategoryService) {
var categoryId = $routeParams.categoryId;
getProductsByCategoryIdServiceCall(CategoryService, categoryId);
$scope.getProductsForCategory = function(){
var categoryId = 4;
getProductsByCategoryIdServiceCall(CategoryService, categoryId);
}
function getProductsByCategoryIdServiceCall(CategoryService, categoryId){
CategoryService.getProductsByCategoryId(categoryId).success(function(data){
$scope.productsDTO = data;
$scope.name = "David M Pugh";
}).error(function(data){
$scope.name = "David Q Pugh";
$scope.name = data;
});
}
}]);
Вот фрагмент кода из категорий.html, который содержит пользовательскую директиву:
<div class="row-fluid">
<div class="span12">
<div class="navbar">
<div class="navbar-inner">
<div class="container" style="width: auto;">
<div class="span5"></div>
<div class="span2">
<div id="currentCategoryDropBoxMenu">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br />
<my-customer></my-customer>
<br />
Я попытался изменить яваскрипт метода, называемый внутри нг щелчка, чтобы быть похожими на: нг-клик = «getProductsForCategory», а также.
оба результата в методе не getProductsForCategory вызывается при щелчке на ссылке
Кто-нибудь есть какие-либо идеи, что моя проблема?
спасибо,
Дэвид
EDITED INFO * Эй, ребята, спасибо за глядя на эту проблему. Это продолжается до сих пор, но я добавил дополнительный тест на мой HTML-фрагмент для моей пользовательской директивы
<div ng-bind-html="panes"></div>
<a href="javascript:void(0);" ng-click="getProductsForCategory()">testing</a>
Перед единственная линия была первым тегом, который был Дивым. Я добавил вторую строку, чтобы увидеть, возможно ли это связывание html непосредственно с тегом div в директиве или если возникла проблема с конфигурацией директивы в другом месте.
Второй тег, который я добавил, должен быть стандартным действием ng-click. мой второй тег href делает вызов функции getProductsForCategory(). Таким образом, похоже, это связано с привязкой моей строки html к элементу div для директивы.
Проблема в том, что моя структура навигации, которую я создаю, может иметь бесконечные вложенные дочерние элементы (это в основном поле выбора suckerfish).
Это означает, что я должен использовать рекурсию, чтобы наметить каждый родитель ДЕТСКИМ навигацию структуры ... в директиве ...
Что вы видите в журнале консоли? Что-нибудь полезное? –