在角度视图和模型之间添加其他逻辑

烈焰1845

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

{
    "x-position" : "center"
}

或者

{
    "x-position" : 20
}

请注意,在第一个示例中,x位置是一个字符串,而在第二个示例中,它是一个整数。这些值绑定到文本类型的HTML输入。我不能使用类型为“ number”的输入,因为如果尝试解释“ center”,它将出现错误。因此,我必须使用文本。

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

{
    "x-position" : "25"
}

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

我是否可以在视图和模型之间添加额外的逻辑层,以便如果用户输入值“ 25px”,则可以删除“ px”,然后parseInt(“ 25”),然后将此值作为整数传递给我的模型...在Angular中是否存在这种情况?

我尝试过的一种方法是在x坐标上设置一个$ watch,并在通过用户输入更改值时添加一些逻辑。对于可预测的数据,这在小范围内有效。但是,这样做的问题是我的模型是动态的,不断变化的,并且可能有数百个“ x位置”需要观察。对我来说,将手表添加到如此大量的动态数据中似乎是不可行的……除非我弄错了。

谢谢

托默尔

我认为您在这里有2种方法:

  1. 如果在保存数据时仅需要转换为数字,则在保存时只需将其转换一次
  2. 如果您确实必须在每次用户更改输入时都进行转换(尽管我看不到需要输入的情况),则可以像已经定义的那样定义手表,也可以放置ng-changeng-blur输入。(这最终还会定义一个手表,但是至少这样您可以对传递给函数的内容有更多的控制权)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章