以角度

时间:2016-06-08 15:07:46

标签: javascript html angularjs

我有一个模型,它可以采用以下两种形式之一:

{
    "x-position" : "center"
}

{
    "x-position" : 20
}

注意在第一个例子中,x-position是一个字符串,而在第二个例子中,它是一个整数。这些值绑定到text类型的HTML输入。我无法使用" number"类型的输入因为如果它试图解释" center"那就会出错。因此,我必须使用文字。

如果我们看第二个例子,如果用户将值更改为25,因为输入的html元素是text类型,我的模型现在是:

{
    "x-position" : "25"
}

问题是文本输入现在已经将模型中x位置的值类型从整数更改为字符串(20到" 25"),这是不合需要的。这是因为我强迫将输入类型设置为" text",即使我想同时允许文本和数字,这是不可能的。我不介意只接受字符串,只要我能够以某种方式操纵字符串并将其转换为数字,然后再将其传回我的模型。

我是否可以在视图和模型之间添加一个额外的逻辑层,这样如果用户输入一个值" 25px",我就可以去掉" px&# 34;,然后是parseInt(" 25"),然后将这个值作为整数传递给我的模型...... Angular中存在这样的事情吗?

我尝试过的一种方法是在x坐标上设置$ watch,并在值通过用户输入更改时添加一些逻辑。这适用于小规模的可预测数据。然而,问题在于我的模型是动态的,不断变化的,它可能有数百个" x-position"我必须要看。将手表添加到如此大量的动态数据对我来说似乎是不可行的......除非我弄错了。

由于

1 个答案:

答案 0 :(得分:0)

我认为你有两种方法:

  1. 如果您只需要在保存数据时转换为数字,那么只需转换一次,当您保存时
  2. 如果你真的必须在每次用户更改输入时转换它(虽然我没有看到需要它的情况),那么你可以像你已经做的那样定义手表,或者你可以放输入上有ng-changeng-blur。 (这最终也会定义一个手表,但至少可以通过这种方式控制你传递给该功能的内容)
相关问题