我希望平均值/ 100根据用户输入改变为印地语/ 100或英语/ 100

时间:2017-05-26 13:18:46

标签: javascript angularjs

所以目前平均值是在HTML代码中计算的。 如果更改了用户输入,则平均值会中断。我该怎么做才能为每个人提供平均更新,

控制器

 <table>    
        <th>NAME</th>
        <th>AGE</th>
        <th>GENDER</th>
        <th>ENGLISH/100</th>
        <th>HINDI/100</th>
        <th>AVERAGE/100</th>

    <tr ng-repeat ="x in names | orderBy:sortColumn">
        <td>{{x.name}}</td>
        <td>{{x.age}}</td>
        <td>{{x.gender}}</td>
        <td><input type="text" ng-model="x.English"></td>
        <td><input type="text" ng-model="x.Hindi"></td>
        <td ng-bind="avg=(x.English+x.Hindi)/2">{{avg}}</td>
        <td>
            <button><a href="" ng-click="delete(x)" style="text-decoration:none;">Delete</a></button>
        </td>
    </tr>
</table>

HTML 这是我希望平均值发生变化的代码:

public static void ConvertMidiToText(string midiFilePath, string textFilePath)
{
    var midiFile = MidiFile.Read(midiFilePath);

    File.WriteAllLines(textFilePath,
                       midiFile.GetNotes()
                               .Select(n => $"{n.NoteNumber} {n.Time} {n.Length}"));
}

2 个答案:

答案 0 :(得分:0)

x.Englishx.Hindi作为字符串值输入,因此您需要解析它们。

<td ng-bind="avg=(parseFloat(x.English)+parseFloat(x.Hindi))/2">{{avg}}</td>

我们不能在Angular表达式中使用javascript,因此您必须设置对原始函数的引用。

$scope.parseFloat = parseFloat;

作为一种解决方法,您还可以使用乘法进行解析。

<td ng-bind="avg=(x.English*1+x.Hindi*1)/2">{{avg}}</td>

答案 1 :(得分:0)

您无法在角度表达式中使用parseInt()函数,您需要创建一个计算avg的方法。

从以下视图调用方法:

<td>{{avg(x.English, x.Hindi)}}</td>

和,在控制器中返回平均值的方法:

$scope.avg = function(e, h){
  if(!h) h=0;
  if(!e) e=0;
  return ( parseInt(h)+parseInt(e))/2;

}

请参阅此plunker