Javascript AngularJS:未聚焦时在输入中显示格式化的模型值
假设我有如下输入:Javascript AngularJS:未聚焦时在输入中显示格式化的模型值,javascript,html,angularjs,Javascript,Html,Angularjs,假设我有如下输入: <input type="text" ng-model="myVariable"> 当前的值为600.23。$scope.myVariable的值应始终为600.23(除非用户更改该值)。当输入没有焦点时,我希望输入显示$600.23,但当使用赋予输入焦点时,我希望它切换到未格式化的模型值600.23,以便用户进行编辑。一旦用户完成编辑并去掉焦点,我希望显示的值再次被货币格式化。基本上类似于电子表格应用程序中格式化单元格的工作方式。为了使问题保持简单,请忽略
<input type="text" ng-model="myVariable">
当前的值为600.23。$scope.myVariable的值应始终为600.23(除非用户更改该值)。当输入没有焦点时,我希望输入显示$600.23,但当使用赋予输入焦点时,我希望它切换到未格式化的模型值600.23,以便用户进行编辑。一旦用户完成编辑并去掉焦点,我希望显示的值再次被货币格式化。基本上类似于电子表格应用程序中格式化单元格的工作方式。为了使问题保持简单,请忽略输入验证的需要
使用jQuery可以很容易地实现这一点,但是使用纯AngularJS可以实现吗?您可以使用ang切换值。创建一个函数,该函数将添加$,并在ngBlur上触发$,然后另一个函数将其删除。这是我创建的解决方案,它依赖于jQuery(更糟糕的是,eval!): 然后在控制器中:
$scope.$watch(function () {
$('input').not(':focus').blur();
});
然后输入字段:
<input type="text" ng-model="myVariable" display-format="currency">
(在我的实际应用程序中,我将实现除货币外的其他显示格式选项)
不过我真的希望有一个非jQuery的解决方案。我之前在研究这个问题时看到了这些,但不清楚如何使用它们来改变显示的值,同时保持myVariable的值不变。不,你不能在处理模型时检查是否有$
<input type="text" ng-model="myVariable" display-format="currency">