Javascript angularjs指令错误:[非指定]

Javascript angularjs指令错误:[非指定],javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我试图使用angular1.x指令,并得到以下错误: angular.js:14700错误:[$compile:nonassign]与指令“ngPage”一起使用的属性“showPageCount”中的表达式“undefined”不可赋值 似乎我没有在指令中签署属性。 我怎样才能让它工作 ng-page.js: angular.module('ngPage', []) .directive('ngPage', function () { return {

我试图使用angular1.x指令,并得到以下错误:

angular.js:14700错误:[$compile:nonassign]与指令“ngPage”一起使用的属性“showPageCount”中的表达式“undefined”不可赋值

似乎我没有在指令中签署属性。 我怎样才能让它工作

ng-page.js:

angular.module('ngPage', [])
    .directive('ngPage', function () {
      return {
        restrict: 'E',
        transclude: true,
        replace: true,
        scope: {
          pageNo: '=',
          pageSize: '=',
          totalCount: '=',
          pageChange: "&",
          showPageCount: '='
        },
        templateUrl: './ngPageTemplate.html',
        link: function (scope, element, attrs) {
          scope.showPageCount = scope.showPageCount ? scope.showPageCount : 5;
          scope.pageCount = Math.ceil(scope.totalCount / scope.pageSize);
          scope.hasPre = scope.pageNo > 1;
          scope.preNo = scope.hasPre ? scope.pageNo - 1 : scope.pageNo;
          scope.hasNext = scope.pageNo < scope.pageCount;
          scope.nextNo = scope.hasNext ? scope.pageNo + 1 : scope.pageNo;

          scope.goPage = function (pageNo) {
            if (scope.pageNo !== pageNo) {
              scope.pageNo = pageNo;
              scope.pageChange();
            }
          };
          scope.getPageList = function () {
            var list = [];
            if (scope.pageCount <= scope.showPageCount) {
              for (var i = 1; i < scope.pageCount + 1; i++) {
                list.push(i);
              }
            } else {
              var startNo = scope.pageNo - scope.showPageCount / 2;
              var endNo = scope.pageNo + scope.showPageCount / 2;
              if (startNo < 1) {
                //前几页
                startNo = 1;
                for (var i = 0; i < scope.showPageCount; i++) {
                  list.push(startNo++);
                }
              } else if (endNo > scope.pageCount) {
                //后几页
                endNo = angular.copy(scope.pageCount);
                for (var i = scope.showPageCount; i >= 0; i--) {
                  list.unshift(endNo--);
                }
              } else {
                //中间页
                startNo = Math.ceil(startNo);
                for (var i = 0; i < scope.showPageCount; i++) {
                  list.push(startNo++);
                }
              }
            }
            return list;
          };
          scope.pageList = scope.getPageList();
        }
      };

    });
角度模块('ngPage',[]) .指令('ngPage',函数(){ 返回{ 限制:'E', 是的, 替换:正确, 范围:{ 页码:'=', 页面大小:'=', totalCount:“=”, 页面更改:“&”, showPageCount:“=” }, templateUrl:“./ngPageTemplate.html”, 链接:函数(范围、元素、属性){ scope.showPageCount=scope.showPageCount?scope.showPageCount:5; scope.pageCount=Math.ceil(scope.totalCount/scope.pageSize); scope.hasPre=scope.pageNo>1; scope.preNo=scope.hasPre?scope.pageNo-1:scope.pageNo; scope.hasNext=scope.pageNo=0;i--){ 列表.取消移位(结束号--); } }否则{ //中间页 startNo=Math.ceil(startNo); 对于(变量i=0;i您将无法在指令
链接
函数的指令范围内使用
showPageCount
参数。如果要在链接中使用该函数,则必须在
ng model options
as中传递该值

<input type="text" ng-model="yourModel" 
ng-model-options='{ debounce: 600, showpagecount: scopecountvalue }' 
ng-page/>
现在可以在link函数中访问该值。 希望这能对你有所帮助。

谢谢你

这是新代码:

html:

goPage函数内部链接:


pageChange({$event:{pageNo:pageNo}})

那么,我可以在指令内部声明一个属性,它与外部是独立的吗?就像angular2组件中没有@Input()和@Output()的属性一样,我想让showPageCount可以传递到指令中,也不能。它可以实现吗?非常感谢,你的回答给了我很多启发,让我加深对范围和指令的理解。我修改了我的代码,它就工作了。
.directive('ngPage', function () {    
    return {
        require: 'ngModel',
        restrict: 'AE',
        link: function (scope, element, attr, ctrl) {
            function inputValue(val) {  
                var pageCount = ctrl.$options.showpagecount;
            }
            ctrl.$parsers.push(inputValue);
        }
    };
})
<ng-page page-no="pageNo" page-size="pageSize" page-change="pageChange($event)" total-count="totalCount" show-page-count="6"></ng-page>
        scope: {
          pageNo: '=',
          pageSize: '=',
          totalCount: '=',
          pageChange: "&",
          showPageCount: '@'
        }