首先,我将向您展示我的html:
<div class="pager" pager-control getPageNumber="getPageNumber()" getPageData="getPageData()">
我“指令”的目的是制作寻呼机。这是js文件自爆:
var paging = angular.module('paging',[]);
paging.controller('pageCtrl',function($scope,$timeout){
$scope.currentPageIndex = 0;
$scope.model = [
{ name: 'www'},
{ name: 'www'},
{ name: 'www'},
{ name: 'www'},
{ name: 'www'}
];
$scope.getPageNumber = function(){
var len = 10,ret=[];
for(i = 0;i < 10; i++) {
ret.push(i);
}
return ret;
};
$scope.getPageData = function(index) {
$scope.currentPageIndex = index;
alert('trigger!');
};
});
paging.directive('pagerControl',function(){
return {
restict: 'A',
replace: false,
transclude: true,
template: '<ul ng-transclude><li ng-class="{current: $parent.currentPageIndex == $index}" ng-repeat="d in $parent.getPageNumber()" ng-click="$parent.getPageData($index)">{{$index + 1}}</li> </ul>',
scope: {
},
link: function(scope,elem,attr) {
}
};
});
期望“当您单击页面项目时,颜色会改变”,但是什么也没发生。
这是jsbin网址:http://jsbin.com/vijax/2/edit
我修复了您的jsbin:
http://jsbin.com/kaziqice/2/edit
您的代码有2个问题:
1)ng-repeat
创建子范围。
您必须替换ng-click="$parent.getPageData($index)"
为ng-click="$parent.$parent.getPageData($index)"
才能访问正确的范围
2)替换currentIndex="currentPageIndex"
为current-index="currentPageIndex"
。这是Angular Angular JS命名约定的命名约定($,camelCase和PascalCase)
对于第一个问题,您不应直接绑定到父作用域,因为它将在代码中产生紧密的耦合。您应该绑定到自己的作用域自身的属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句