【发布时间】:2013-12-18 04:43:55
【问题描述】:
我正在尝试创建一个具有隔离范围的简单分页指令。出于某种原因,当我手动更改值时,它会变得有点笨拙。这是我的问题:
当我向前和向后翻页时,效果很好。太棒了
当我在该字段中输入一个页面时,它会起作用。很棒
但是,如果我在该字段中输入一个页面,然后尝试前进和后退,则在我将一个页面输入该字段后,ng-model 似乎会中断。当我没有隔离我的范围时,我让它工作了,但我对它为什么会破坏它感到困惑。这是我的代码:
HTML:
<paginate go-to-page="goToPage(page)" total-pages="results.hits.pages" total-hits="results.hits.total"></paginate>
指令:
'use strict';
angular.module('facet.directives')
.directive('paginate', function(){
return {
restrict: 'E',
template: '<div class="pull-right" ng-if="(totalPages !== undefined) && (totalPages > 0)">'+
'<span class="left-caret hoverable" ng-click="changePage(current-1)" ng-show="current > 1"></span> Page'+
' <input type="number" ng-model="current" class="pagination-input" ng-keypress="enterPage($event)"/> of'+
' {{totalPages}} '+
'<span class="right-caret hoverable" ng-click="changePage(current+1)" ng-show="current < totalPages"></span>'+
'</div>',
scope: {
goToPage: '&',
totalPages: '=',
totalHits: '='
},
link: function(scope) {
scope.current = 1;
scope.changePage = function(page) {
scope.current = page;
window.scrollTo(0,0);
scope.goToPage({page:page});
};
scope.enterPage = function(event) {
if(event.keyCode == 13) {
scope.changePage(scope.current);
}
}
}
}
});
我做错了什么?
【问题讨论】:
-
你能设置一个 jsFiddle 或 Plunkr 吗?
标签: javascript angularjs input directive