2016-05-14 3 views
0

HTML:AngularJS: номер не обновляется при вызове функции?

<div ng-controller="MainCtrl as ctrl"> 
    <input type="text" ng-model="ctrl.number"> 
    <h2>{{ctrl.number}}</h2> 

    <button ng-click="ctrl.factorial(ctrl.number)"> 
     Click 
    </button> 
</div> 

JS:

angular 
    .module('myApp', []) 
    .controller('MainCtrl', MainCtrl) 

    function MainCtrl() { 
     var ctrl = this; 

     ctrl.number = 5; 

     ctrl.factorial = function(num) { 
      if (num === 1) { 
       return 1; 
      } else { 
       return num * ctrl.factorial(num-1) 
      } 
     } // factorial 
    } 

Номер будет просто оставаться так, как она есть, ее факторный не показано. Как это исправить? Я действительно потерян.

+0

Вы не consumig значение, возвращаемое функцией – Rimpy

ответ

1

Когда вы передаете ctrl.number функции, его номер, чтобы его значение было скопировано. В функции, которую вы вычисляете с рекурсией, соответствующий факториал, но вы просто возвращаете его и не изменяете ctrl.number, чего вы действительно хотите.

Легко исправить было бы изменить ng-click="ctrl.factorial(ctrl.number) к ng-click="ctrl.number = ctrl.factorial(ctrl.number)

Смежные вопросы