我是角度js的新手。我在指令中遇到了问题。我有一个ng-href,我从中调用了一个函数编写的指令控制器中的指令。我控制台控制器,它正在工作,但功能不起作用。
这是我的config.js文件:
angular.module('movieApp').config(['$urlRouterProvider','$stateProvider', '$locationProvider', function($urlRouterProvider,$stateProvider,$locationProvider){
$stateProvider.state('home',{
url : '/home',
templateUrl : 'app/components/home/home.html',
controller : 'HomeController',
}).state('yearsort',{
url : '/yearsort/:id',
template : '<year-sort></year-sort>',
});
$urlRouterProvider.otherwise('home');
}]);
这两个链接在我的主页上:
<ul>
<li><a ng-href="#/yearsort/oldtonew">Old to new</a></li>
<li><a ng-href="#/yearsort/newtoold">New to old</a></li>
</ul>
这是我的指令文件:
angular.module('movieApp.yearsort.directives', []).directive('yearSort',[function(){
return{
restrict : 'AEC',
replace : true,
transclude : true,
scope : {
yearSortFn: '&'
},
controller : 'YearsortController',
templateUrl : 'app/components/yearsort/yearsort.html',
};
}]);
这是我的YearsortController文件,其中显示了console.log('abc'),但该函数无效。
angular.module('movieApp.yearsort.controller', []).controller('YearsortController', ['$scope','HomeFactory','$timeout','$state',function($scope,HomeFactory,$timeout,$state) {
$scope.sortParam = $state.params.id;
console.log('abc');
$scope.yearSortFn = function(){
HomeFactory.movieApiFn()
.then(function(data){
if($scope.sortParam=='oldtonew'&&$scope.sortParam!='newtoold'){
$scope.yearlyMovie = data.sort(function(a, b){return a.title_year - b.title_year});
}
else if($scope.sortParam=='newtoold'&&$scope.sortParam!='oldtonew'){
$scope.yearlyMovie = data.sort(function(a, b){return b.title_year - a.title_year});
}
},function(){
console.log('data cannot retrieved');
});
}
<div ng-controller="YearsortController">
<year-sort yearSortFn="yearSortFn()"></year-sort>
</div>
这是我的模板文件:
<div ng-controller="YearsortController">
<div ng-repeat="movie in yearlyMovie track by $index" class="col-xs-10 col-sm-4 col-md-3 col-lg-3">
<div class="panel panel-primary">
<div class="panel-heading">{{movie.movie_title}}</div>
</div>
</div>
</div>
</div>
答案 0 :(得分:0)
总的来说,根据您提供的内容,这是我在审核后可以提出的内容。也就是说,如果这没有用,请为社区提供一个演示,以便更好地提供帮助。至少解释一下是否发生了什么,错误与否。
您有一个额外的<div>
标记:
<div ng-controller="YearsortController">
<div ng-repeat="movie in yearlyMovie track by $index" class="col-xs-10 col-sm-4 col-md-3 col-lg-3">
<div class="panel panel-primary">
<div class="panel-heading">{{movie.movie_title}}</div>
</div>
</div>
</div>
</div> <!-- Remove this -->
此外,在您的开场<div ...>
中,将其更改为<div>
。
此外,您的控制器代码下的HTML代码段是什么?我会删除它。
<div ng-controller="YearsortController">
<year-sort yearSortFn="yearSortFn()"></year-sort>
</div>
因此,也要删除它(你没有使用它):
scope : {
yearSortFn: '&'
},