2016-01-24 61 views
2

作为一个从asp.net mvc转向角度js的开发人员,我对角度js验证的默认验证实现感到失望。看起来角度,默认情况下在视图中实现客户端验证,这违反了关注分离规则(imho)。使用Angular JS查看模型验证?

就我个人而言,我更喜欢在viewmodel而不是view中实现验证规则。不确定这是否被广泛采用并在角度js社区中推荐。

所以我的问题是:
1)角js中的验证的默认实现是一种首选的方式,而不是将其分离为视图模型? 2)是否有任何现有的角度库在单独的层中实现验证逻辑?

我期待着这样的事情。

model.User = { 
    Name: { validate: required, errorMessage: 'Name is required'}, 
    Price: { 
     validate: number, errorMessage: 'Price should be number', 
     validate: number.min = 0, number.max = 100, errorMessage = 'Price should be between 0 and 100', 
    } 
} 

<input ng-model="User.Name" name="Name"> 
<input ng-model="User.Price" name="Price> 
+0

Angular的美丽之处在于它使用了指令。你可能感兴趣的是ngMessages。你有问题还是只是发泄? –

+0

看起来像ngMessages是你想要的 – pixelbits

+0

@BrianBaker我已编辑帖子,包括我的问题。是的,我们可以使用指令,过滤器等实现它。但是根本的问题是,如果没有支持此功能的现有角库,我们需要重新考虑并思考为什么其他人不实现与视图分开的验证逻辑,以及为什么在实现之前这不是角js的实践我们仍处于设计阶段。 – desmondlee

回答

1

anugular 2有Model Driven Forms您可以在控制器中引入验证逻辑。

Good to read-forms-template-driven-vs-model-driven

+1

感谢您的回复。至少我们知道它现在已经得到支持。至少,事实证明这仍然是一种更好的方式。但是我们将使用angular 1.4来进行我们的开发。 – desmondlee