#javascript #html #angularjs #angularjs-directive #angularjs-ng-repeat
#javascript #HTML #angularjs #angularjs-директива #angularjs-ng-repeat
Вопрос:
у меня проблема с моим кодом AngularJS, в настоящее время я пытаюсь заполнить свою боковую <li>s
панель тем, что есть <a>s
внутри, с помощью ng-click для вызова функции внутри контроллера.
Итак, проблема в том, что после того, как я успешно загружаю директиву, ng-click внутри этой директивы не работает.
Я новичок в Angular, поэтому прошу прощения, если я допустил какую-либо глупую ошибку.
Итак, мой HTML:
<body ng-Controller="myController as ctrl">
<ul class="nav nav-sidebar">
<sidebar-items recieved-items="ctrl.recievedSidebar" item-click="ctrl.getItems(amp;quot;{{ctrl.recievedSidebar.name}}amp;quot;)">
</sidebar-items>
</ul>
</body>
Мое угловое приложение:
(function () {
'use strict';
angular.module('myApp', [])
.controller('myController', myController)
.service('getItemsService', getItemsService)
.directive('foundItems', FoundItemsDirective)
.directive('sidebarItems', SideBarItemsDirective)
myController.$inject = ['getItemsService'];
function myController(getItemsService) {
var ctrl = this;
ctrl.title = "title";
ctrl.recieved = undefined;
ctrl.getItems = function (jsonFile) {
getItemsService.getItems(jsonFile)
.then(function (result) {
if (jsonFile == "Collections"){
ctrl.recievedSidebar = result.Collections;
}else {
ctrl.recieved = result.links;
ctrl.title = "Title"
}
})
.catch(function(error) {
console.log("Something went wrong!!! Error code = " error);
});
}
ctrl.getItems("Collections");
ctrl.notRecieved = function () {
if (ctrl.recieved == undefined) {
return false;
}
return ctrl.recieved.length == 0;
}
}
getItemsService.$inject = ['$http'];
function getItemsService($http) {
var service = this;
service.getItems = function(jsonFile) {
return $http({
method: "GET",
url: ("json/" jsonFile ".json"),
cache: true
}).then(function(response){
return response.data;
});
}
}
function FoundItemsDirective() {
var ddo = {
restrict: 'E',
templateUrl: 'directiveTemplates/foundItemsDirective.html',
scope: {
items: '<recievedItems'
},
controller: DirectiveController,
controllerAs: 'dirCtrl',
bindToController: true,
transclude: true
};
return ddo;
};
function DirectiveController() {
}
function SideBarItemsDirective() {
var ddo = {
restrict: 'E',
templateUrl: 'directiveTemplates/sideBarDirectiveTemplate.html',
scope: {
items: '<recievedItems',
itemClick: 'amp;'
},
controller: SideBarDirectiveController,
controllerAs: 'dirCtrl',
bindToController: true,
transclude: true
};
return ddo;
}
function SideBarDirectiveController() {
}
})();
И мой шаблон директивы:
<li ng-repeat="item in dirCtrl.items">
<a href="" ng-click="ctrl.getItems(amp;quot;{{item.name}}amp;quot;)">{{item.label}}</a>
</li>
Заранее спасибо.
Комментарии:
1. В вашем выражении ng-click с помощью ctrl.GetItems() вы можете просто передать item.name прямо как этот ctrl.GetItems(item.name )