角度1错误:[ng:areq] - 控制器内部的控制器

问题描述 投票:0回答:1

我正试图从这个http://plnkr.co/edit/kFKejRU0G2wmkD7GlNdH?p=preview使用角度等级

这是我的角度代码。

var ProfileApp = angular.module('ProfileApp', ['ui.bootstrap']);
ProfileApp.controller('getprofile', function($scope, $http) {
//Some codes are here

})

  var RatingDemoCtrl = function ($scope) {

    $scope.myRate = 0;

     $scope.submit = function() {
         console.log($scope.percent) ; //null
     }

     $scope.rate = 1;
     $scope.max = 5;
     $scope.isReadonly = false;
     $scope.percent = 20;

      $scope.hoveringOver = function(value,object) {
        console.log('hoveringOver', value);
        $scope.overStar = value;
        $scope.percent = (100 * $scope.overStar) / $scope.max;
      };

       $scope.hoveringLeave = function(rate) {
         console.log('hoveringLeave',  $scope.rate);

       $scope.percent = (100 * $scope.rate) / $scope.max;
      };
    };

以上代码用于评级。这是html代码。

<body id="home" ng-app="ProfileApp">
    <div ng-controller="getprofile">

//Some html codes 

             <div ng-controller="RatingDemoCtrl" class="well well-small">
<form class="Scroller-Container" ng-submit="submit()" ></form>

    <rating  value="rate" max="max" readonly="isReadonly" on-hover="hoveringOver(value)" on-leave="hoveringLeave(rate)" ></rating>
    <span class="badge" ng-class="{'badge-warning': percent<30, 'badge-info': percent>=30 && percent<70, 'badge-success': percent>=70}" ng-show="overStar && !isReadonly">{{percent}}%</span>

<input type="submit" id="submit" value="Submit" />
</form>

<pre>{{percent}}</pre>

</div>

如你所见,我有嵌套控制器,这给了我错误错误:[ng:areq]。

请告知现在可以做些什么。有什么方法可以解决它。

更新:使用saj代码后,我收到错误。 angular.min.js:101错误:[ngRepeat:dupes] http://errors.angularjs.org/1.3.2/ngRepeat/dupes?p0=r%20in%20range&p1=object%3A10&p2=%7B%22stateOn%22%3Anull%2C%22stateOff%22%3Anull%7D

没有明星在看。我检查代码和代码如下。

<div ng-controller="RatingDemoCtrl" class="well well-small ng-scope">
                                        <form class="Scroller-Container ng-pristine ng-valid" ng-submit="submits()"></form>
                                        <span ng-mouseleave="reset()" value="rate" max="max" readonly="readonly" on-hover="hoveringOver(value)" on-leave="hoveringLeave(rate)" class="ng-isolate-scope">
    <!-- ngRepeat: r in range -->
</span>
                                        <span class="badge ng-binding badge-warning ng-hide" ng-class="{'badge-warning': percent<30, 'badge-info': percent>=30 &amp;&amp; percent<70, 'badge-success': percent>=70}" ng-show="overStar &amp;&amp; !isReadonly">20%</span>
                                        <input type="submit" id="submit" value="Submit">


                                    <pre class="ng-binding">20</pre>

                                  </div>
javascript html angularjs angular-controller
1个回答
1
投票

你只需要分离出'RatingDemoCtrl'控制器

 app.controller('RatingDemoCtrl', function($scope) {
      $scope.myRate = 0;
      $scope.submit = function() {
        console.log($scope.percent); //null
      }
      $scope.rate = 1;
      $scope.max = 5;
      $scope.isReadonly = false;
      $scope.percent = 20;
      $scope.hoveringOver = function(value, object) {
        console.log('hoveringOver', value);
        $scope.overStar = value;
        $scope.percent = (100 * $scope.overStar) / $scope.max;
      };
      $scope.hoveringLeave = function(rate) {
        console.log('hoveringLeave', $scope.rate);
        $scope.percent = (100 * $scope.rate) / $scope.max;
      };
    });

WORKING DEMO

© www.soinside.com 2019 - 2024. All rights reserved.