使用 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] 的方法
推荐这么写:
使用
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()方法才是应该出现在这里的才对。