如何将html值传递给AngularJS方法?

时间:2014-04-03 09:49:47

标签: javascript angularjs

我正在尝试从绑定到$ scope的html元素angularJS方法传递一个值。

代码是......

<div ng-app ng-controller="miniC">

      <input name="someitem" ng-blur="CalculateTotals(this)"/>

</div>

function miniC($scope){


    $scope.myAccounts =  new Array();

    $scope.CalculateTotals = function(amt){

        console.log(amt);

    }


}

codepane link

但我似乎无法从元素中提取值。我不想在这种情况下绑定,因为我正在尝试一些事情,这是我的方法之一....

3 个答案:

答案 0 :(得分:1)

Angular表达式是它们被评估的范围的所有属性,因此this将只是当前范围。

考虑到这一点,您在范围内提供此功能。最简单的方法是使用ng-model="someValue",然后使用ng-blur="CalculateTotals(someValue)"

但是我在你的问题中也注意到你明确地不想绑定,如果你不使用任何其他内容,这确实增加了一些开销,所以你必须改为创建一个自定义指令。 / p>

答案 1 :(得分:0)

最简单的方法是使用ng-model指令将输入转换为模型的表示,允许直接访问其值。但是,如果由于某些原因,您不想这样做,您仍然可以通过ngBlur指令公开的target变量的$event属性访问此元素。例如:

<强> HTML:

<div ng-app ng-controller="miniC">
    <input name="someitem" ng-blur="AddToTotal($event.target)" />
    <button type="button" ng-click="Reset()">Reset</button>
    <br />
    <span>Totals: {{ CalculateTotals() }}</span>
</div>

<强> JS:

function miniC($scope) {
    $scope.myAccounts = [];

    $scope.Reset = function() {
        this.myAccounts.length = 0;
    }

    $scope.CalculateTotals = function() {
        return this.myAccounts.reduce(function(sum, el) {
            return sum + el;
        }, 0);
    };

    $scope.AddToTotal = function(inp) {
        var value = inp.value;
        this.myAccounts.push(+value);
    };
}

Demo。它有点滑稽,因为每次焦点移出输入时都会添加一个新值。

答案 2 :(得分:0)

ng-model="testVal"附加到您的输入字段,并console.log($scope.testVal);以记录您的值。