Javascript 使用指令呈现星级系统

Javascript 使用指令呈现星级系统,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我正在尝试使用angularjs/ionic静态创建一个明星评级系统,但收效甚微。但是目前没有任何东西输出到屏幕上。。。我做错了什么 service.html <ion-list> <ion-item ng-repeat="business in businessList track by $index" class="item-icon-right"> <h2>{{business.name}}</h2> {{busine

我正在尝试使用angularjs/ionic静态创建一个明星评级系统,但收效甚微。但是目前没有任何东西输出到屏幕上。。。我做错了什么

service.html

  <ion-list>
    <ion-item ng-repeat="business in businessList track by $index" class="item-icon-right">
      <h2>{{business.name}}</h2> {{business.distance}} miles
      <br>
      <div star-rating rating-value="{{business.rating}}" max="rating.max"></div>
      <i class="icon ion-chevron-right icon-accessory"></i>
    </ion-item>
  </ion-list>
<div star-rating rating-value="rating.current" max="rating.max"></div>

controller.js

angular.module('starter.directives', [])

.directive('starRating', function() {
  return {
    restrict: 'A',
    template: '<ul class="rating">' +
      '<li ng-repeat="star in stars" ng-class="star">' +
      '\u2605' +
      '</li>' +
      '</ul>',
    scope: {
      ratingValue: '=',
      max: '='
    },
    link: function(scope, elem, attrs) {
      scope.stars = [];
      for (var i = 0; i < scope.max; i++) {
        scope.stars.push({
          filled: i < scope.rating
        });
      }
    }
  }
});
.service("BusinessData", [function () {
    var businessData = [
    {
        id: 1,
        serviceId: 1,
        name: 'World Center Garage',
        distance: 0.1,
        rating: 4
    }
];

    return {
        getAllBusinesses: function () {
            return businessData;
        },

        getSelectedBusiness: function(serviceId) {
            var businessList = [];
            serviceId = parseInt(serviceId);
            for(i=0;i<businessData.length;i++) {
                if(businessData[i].serviceId === serviceId) {
                    businessList.push(businessData[i]);
                }
            }
            return businessList;
        }
    }
}])
.controller('ServiceCtrl', function($scope, ServicesData, BusinessData, $stateParams) {
  $scope.service = ServicesData.getSelectedService($stateParams.service);
  $scope.businessList = BusinessData.getSelectedBusiness($stateParams.service);
});
.controller('ServiceCtrl', function($scope, ServicesData, BusinessData, $stateParams) {
  $scope.service = ServicesData.getSelectedService($stateParams.service);
  $scope.businessList = BusinessData.getSelectedBusiness($stateParams.service);
  $scope.ratings = {
      current: 5,
      max: 10
     };
还可以修改service.html

  <ion-list>
    <ion-item ng-repeat="business in businessList track by $index" class="item-icon-right">
      <h2>{{business.name}}</h2> {{business.distance}} miles
      <br>
      <div star-rating rating-value="{{business.rating}}" max="rating.max"></div>
      <i class="icon ion-chevron-right icon-accessory"></i>
    </ion-item>
  </ion-list>
<div star-rating rating-value="rating.current" max="rating.max"></div>


希望它能帮助你摆脱困境

controller.js

angular.module('starter.directives', [])

.directive('starRating', function() {
  return {
    restrict: 'A',
    template: '<ul class="rating">' +
      '<li ng-repeat="star in stars" ng-class="star">' +
      '\u2605' +
      '</li>' +
      '</ul>',
    scope: {
      ratingValue: '=',
      max: '='
    },
    link: function(scope, elem, attrs) {
      scope.stars = [];
      for (var i = 0; i < scope.max; i++) {
        scope.stars.push({
          filled: i < scope.rating
        });
      }
    }
  }
});
.service("BusinessData", [function () {
    var businessData = [
    {
        id: 1,
        serviceId: 1,
        name: 'World Center Garage',
        distance: 0.1,
        rating: 4
    }
];

    return {
        getAllBusinesses: function () {
            return businessData;
        },

        getSelectedBusiness: function(serviceId) {
            var businessList = [];
            serviceId = parseInt(serviceId);
            for(i=0;i<businessData.length;i++) {
                if(businessData[i].serviceId === serviceId) {
                    businessList.push(businessData[i]);
                }
            }
            return businessList;
        }
    }
}])
.controller('ServiceCtrl', function($scope, ServicesData, BusinessData, $stateParams) {
  $scope.service = ServicesData.getSelectedService($stateParams.service);
  $scope.businessList = BusinessData.getSelectedBusiness($stateParams.service);
});
.controller('ServiceCtrl', function($scope, ServicesData, BusinessData, $stateParams) {
  $scope.service = ServicesData.getSelectedService($stateParams.service);
  $scope.businessList = BusinessData.getSelectedBusiness($stateParams.service);
  $scope.ratings = {
      current: 5,
      max: 10
     };
还可以修改service.html

  <ion-list>
    <ion-item ng-repeat="business in businessList track by $index" class="item-icon-right">
      <h2>{{business.name}}</h2> {{business.distance}} miles
      <br>
      <div star-rating rating-value="{{business.rating}}" max="rating.max"></div>
      <i class="icon ion-chevron-right icon-accessory"></i>
    </ion-item>
  </ion-list>
<div star-rating rating-value="rating.current" max="rating.max"></div>


希望它能帮助你摆脱困境

您能告诉我们您的控制台中是否显示了任何内容吗?所有东西都装好了吗?发生了什么,没有发生什么?如果我用5颗星中的
{{business.rating}}替换
,那么我得到了正确的输出(即在这种情况下,5颗星中有4颗星)。我想问题在于协调指令对该值的操作,以及服务的最终输出。HTMLC你能把它摆弄得比什么是“rating.max”?看来你从来没有下过决心it@KunalKakkad我不知道我会怎么做,但我基于这个问题中的解决方案编写了代码库:您能告诉我们您的控制台中是否显示了任何内容吗?所有东西都装好了吗?发生了什么,没有发生什么?如果我用5颗星中的
{{business.rating}}替换
,那么我得到了正确的输出(即在这种情况下,5颗星中有4颗星)。我想问题在于协调指令对该值的操作,以及服务的最终输出。HTMLC你能把它摆弄得比什么是“rating.max”?看来你从来没有下过决心it@KunalKakkad我不确定我会怎么做,但我基于在这个问题中找到的解决方案的代码库:这是不正确的,因为范围上的ratings对象是一个列表,并且在html代码中您引用了一个
rating
对象,您尚未将其添加到控制器。嘿,您现在可以检查它吗,因为我已在controller.js中更新了我的答案这是不正确的,因为作用域上的评级对象是一个列表,并且在html代码中您引用了一个
评级
对象,你还没有把它添加到控制器中。嘿,我已经在controller.js中更新了我的答案,你现在能检查一下吗