javascript - angularjs中radio表单提交问题
迷茫
迷茫 2017-04-10 15:41:06
[JavaScript讨论组]


我用p模拟的radio按钮,用ng-checked实现radio的切换选择,当点击第一个模拟的p点击的时候就将此p下的radio的ng-checked设置为true,以此类推,但是当点击提交之后,formData里没有数据,网上搜了一下是ng-model和ng-checked不能同时使用,请问还有别的思路和方法么?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
伊谢尔伦

推荐这么写:

<input ng-model="signup.mode"
       ng-class="{'active': signup.mode == 'person'}"
       type="radio"
       value="person"
       id="person-radio">
<label for="person-radio">个人用户</label>
<input ng-model="signup.mode"
       ng-class="{'active': signup.mode == 'company'}"
       type="radio"
       value="company"
       id="company-radio">
<label for="company-radio">企业用户</label>

使用 label 而不是 p 来模拟 radio 按钮的理由是:label 可以用 for 属性与 input[radio]id 进行联动(这是 HTML 内置的行为),于是就不需要额外的数据绑定。当前激活的的 input[radio] 会把 value 的值赋给 ng-model 绑定的对象上去。

另外,ngChecked 的作用是给元素加上 checked 属性,这个属性在 HTML 里的定义是用来指示是否被默认选中,而不是切换被选中项。当然你可以这么用,然而 ngChecked 是要求里面的表达式返回布尔值的(以此来判定是否 checked),看你的代码:

  • 点击 p 的时候调用了 isActive('x'),这个不像是设定当前激活 input[radio] 的方法,反而像是返回是否为激活 input[radio] 的方法

  • ng-checked 直接传入的表达式是布尔值吗?我不得而知。然而看起来 isActive() 方法才是应该出现在这里的才对。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号