2013-12-17 30 views
0

考虑(从http://www.ng-newsletter.com/posts/validations.html)这个例子标记:如何使用JavaScript代替自定义HTML属性的Angular Forms?

<div class="row"> 
    <div class="large-12 columns"> 
    <label>Your name</label> 
    <input type="text" 
     placeholder="Name" 
     name="inputNameAttributeValue" 
     ng-model="signup.name" 
     ng-minlength=3 
     ng-maxlength=20 required /> 
    <div class="error" 
     ng-show="signup_form.name.$dirty && signup_form.name.$invalid"> 
     <small class="error" 
     ng-show="signup_form.name.$error.required"> 
     Your name is required. 
    </small> 
    <small class="error" 
      ng-show="signup_form.name.$error.minlength"> 
      Your name is required to be at least 3 characters 
    </small> 
    <small class="error" 
     ng-show="signup_form.name.$error.maxlength"> 
     Your name cannot be longer than 20 characters 
    </small> 
    </div> 
    </div> 
</div> 

有没有办法来完成同样的事情,但使用JavaScript,而不是定制的角属性?

例如,有没有一种方法可以使用JavaScript代替这些Angular html属性:ng-model,ng-minlength,ng-maxlenth,ng-show?

编辑: 只是为了澄清,我正在寻找一个使用Angular JavaScript API的解决方案。我想要一个单独的JavaScript文档(链接自我的HTML文档),它使用Angular JavaScript API。例如,是否有一种方法可以使用Angular API而不是自定义的Angular HTML属性为特定的表单字段指定ng-model?

+1

您是否在'如何在不使用Angular的情况下完成此任务'?你可以用jQuery从头开始,但是你没有利用Angular提供的东西。或者我误解了你? –

+0

有办法做所有你问的东西,但为了使它更容易,AngularJS被创建。 – Sangram

+0

我更新了我的问题。请参阅最后的“编辑:”部分。我试图找出是否有办法用Angular来实现这一点。而且,我想使用“最佳实践”类解决方案。所以,如果完成我所追求的唯一方法被认为是一种“哈克”解决方案,我不会朝这个方向前进。我是Angular的新手,所以我想弄清楚什么是可能的。 – edt

回答

1

据我所知,你想从javascript中添加一个指令(例如ng-model),类似于你如何用jQuery来做。 简短回答:不要这样做。

更长答案:这可能在技术上是可行的,但它会违反AngularJS的基本原则。你的控制器不应该触及HTML 的所有,实际上任何应该直接操作HTML的代码都应该放在一个指令中。该指令应直接放在HTML中的输入中,这正是你想要避免的。

如果在您的HTML中放置指令对您的项目不实用,那么也许您应该重新考虑使用AngularJS。

有一个相当长的(和好写的)回答这里#2这也解释了“如何在AngularJS想”,你可能会发现,它的利益:https://stackoverflow.com/a/15012542/179024

这也将是有趣的,知道你为什么要去做这个?做事往往有一种“角度的方式”,但它可能与我们以前做的不同。

+0

很好的答案和谢谢你的链接。据说,我不会设计我的页面,然后用DOM操作来改变它。 – edt

+0

很高兴听到它!我希望你的项目顺利:) –

相关问题