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">