我们正在转换一个非常古老的ColdFusion应用程序,该应用程序可以方便地使用"这个"与执行格式化的函数结合使用:
<td>$<input type="text" name="txtTaxProration" id="txtTaxProration" value="0.00" alt="Tax Proration" onblur="dollarBlur(this);"></td>
dollarBlur函数会将数字输入转换为货币,即如果用户输入123,则转换为123.00; 23.45被留下23.45。这使得HTML方面的引用变得容易,但在实际函数中更容易,因为不必指定元素的名称。在Angular中有一些类似的方法吗?
<td>$<input type="text" ng-model="NetSheetDetail.TxtHomeWarranty" name="txtHomeWarrantyPolicy" id="txtHomeWarrantyPolicy" value="0.00" ng-change="angularDollarBlur(this)" ng-model-options="{ updateOn: 'blur' }"></td>
以下工作正常,几乎是HTML
<input type="text" ng-model="NetSheetDetail.TxtHomeWarranty" ng-change="reCalcX('NetSheetDetail.TxtHomeWarranty')" ng-model-options="{ updateOn: 'blur' }" ></td>
控制器
$scope.reCalcX = function (propName) {
alert($scope.$eval(propName));
$scope['propName'] = 666;
};
$ scope。$ eval(propName)正确反映了在网页上输入的内容($ scope [&#39; propName&#39;]未定义)。但是,$ scope [&#39; propName&#39;]似乎无法正常工作 - 此更改不会反映在网页中。
答案 0 :(得分:0)
是的,只需传递模型。
ng-change="angularDollarBlur(NetSheetDetail.TxtHomeWarranty)"
$scope.angularDollarBlur = function (model) {
console.log(model);
}
这是另一个例子:
angular.module('app',[]).controller('myController', function ($scope) {
$scope.NetSheetDetail = {
TxtHomeWarranty: 'Hello World!'
};
$scope.angularDollarBlur = function (text, obj, prop) {
alert(text);
obj[prop] = 'Nope.';
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="myController">
<input type="text" ng-model="NetSheetDetail.TxtHomeWarranty" ng-change="angularDollarBlur(NetSheetDetail.TxtHomeWarranty,NetSheetDetail,'TxtHomeWarranty')" />
</div>