无法将参数发送到ng-init

时间:2016-07-13 05:17:03

标签: javascript angularjs

public function sendInfo(\Order $order){...}

在上面的代码中,我想将<input type="number" maxlength="1" max="5" min="0" placeholder="0" ng-model="rate"> <div ng-init="stars=Func(2)"> Rating: <span ng-repeat="x in stars track by $index">*</span> </div> rate 传递给函数Func。 ng-model="rate"此费率应从ex: Func(rate);传递。

JS代码:

ng-model

2 个答案:

答案 0 :(得分:0)

您需要重写Func,以便它返回一个包含rate元素数量的数组,以便您的ng-repeat可以使用它来显示星星。

就像

一样简单
  $scope.Func = function(n) {
    return new Array(n);
  }

现在,使用ng-initrate初始化为两个:

<input type="number" maxlength="1" max="5" min="0" placeholder="0" ng-model="rate" ng-init="rate=2" >

Plnkr here

编辑:如果您的要求不是使用Array aka集合,则ng-repeat不可用。不要害怕,我们可以返回一串星星。

将您的Func更改为:

  $scope.getStars = function(n) {

    var stars = "";
    for (var i = 0; i < n; i++) {
      stars += "*";
    }
    return stars;
  }

您的评分现在只显示字符串:

<div >
  Rating: {{getStars(rate)}}
</div>

新Plnkr here

答案 1 :(得分:0)

由于您无法使用数组并且速率限制非常低,因此您无需创建函数,并且可以使用ngSwitch来显示/隐藏适当的速率,如下所示:

(function() {
  'use strict';
  angular.module('app', [])
    .controller('mainCtrl', function($scope) {
      $scope.rate = 2;
    })
})();
<!DOCTYPE html>
<html ng-app="app">

<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script>
</head>

<body ng-controller="mainCtrl">
  <input type="number" maxlength="1" max="5" min="0" placeholder="0" ng-model="rate">

  <div ng-switch="rate">
    Rating:
    <span ng-switch-when="1">*</span>
    <span ng-switch-when="2">**</span>
    <span ng-switch-when="3">***</span>
    <span ng-switch-when="4">****</span>
    <span ng-switch-when="5">*****</span>
  </div> 
</body>

</html>