我正在尝试从绑定到$ 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);
}
}
但我似乎无法从元素中提取值。我不想在这种情况下绑定,因为我正在尝试一些事情,这是我的方法之一....
答案 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);
以记录您的值。