
页面加载后指令里边这个musicList没有值,controller里边写假值的时候正常,用ajax请求数据后就不正常了
假数据的demo:pagination
-
{{music.name}}
-
{{music.singer}}
{{music.content}}
后台请求:
music.controller('HomeCtrl', ['$scope', 'audioService', 'homeService', function ($scope, audioService, homeService){
homeService.getMusicList().then(function (data){
$scope.musicList = data;
});
homeService.getRankFour().then(function (data){
$scope.musicRank = data;
});
$scope.playMusic = function (){
audioService.playMusic();
}
}]);
music.factory('homeService', ['$rootScope', '$http', function ($rootScope, $http){
var service = {};
service.getMusicList = function (){
var url = $rootScope.apiHost + '/musicmood';
return $http.get(url).then(function (resp){
return resp.data;
});
};
service.getRankFour = function (){
var url = $rootScope.apiHost + '/rankfour';
return $http.get(url).then(function (resp){
return resp.data;
});
};
return service;
}]);
指令如下:
music.directive('pagination', ['$interval', function ($interval){
return {
restrict: 'AE',
replace: true,
template: '\
\
首页 \
上一页\
... \
{{num}} \
... \
下一页\
尾页 \
',
link:function (scope, element, attrs){
scope.currentPage = attrs.currentpage;
scope.itemsPerPage = attrs.itemsperpage;
scope.itemsList = attrs.itemslist;
scope.pageList = attrs.pagelist;
// console.log(scope);
scope.itemsList = scope.$eval(scope.itemsList);
scope.pageCount = function () {
if (scope.itemsList) {
return Math.ceil(scope.itemsList.length / scope.itemsPerPage);
} else {
return 1;
}
};
scope.total = scope.pageCount();
scope.number = [];
for(var i=0; i 0) {
scope.currentPage--;
}
scope.jumpPageList();
};
scope.prevPageDisabled = function () {
return scope.currentPage +1 == 1;
};
scope.nextPage = function () {
if(scope.nextPageDisabled()){
return;
}
if (scope.currentPage < scope.pageCount()) {
scope.currentPage++;
}
scope.jumpPageList();
};
scope.nextPageDisabled = function () {
return (scope.currentPage +1) == scope.total;
};
}
}
}]);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我不太理解你这个写法
不过在指令中 如果你不设置scope的话 默认是继承父类的scope
所以你直接用scope.itemslist就是 html页面中的 itemslist值,而不需要用attr.xx去获取
(1) 一般为了不污染父级的scope 都会设置成
的形式
(2)使用$broacast 传播事件
把 $http 请求的 代码贴下~~
感觉你应该是加载的问题,数据加载在指令生效之后,所以没有数据,以前遇到过类似的问题,检查一下加载顺序。
你好,请问 你这个问题解决了吗?我现在也遇到 同样的问题,而且监控失败