HTML"这个"与AngularJS ng-model

时间:2015-08-11 22:14:52

标签: html angularjs

我们正在转换一个非常古老的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;]似乎无法正常工作 - 此更改不会反映在网页中。

1 个答案:

答案 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>