在 ng-repeat 列表中,我很难为列表中的每个项目放置一个 ON/OFF 按钮(使用 JQ UI 包装单选按钮)。
使用单选按钮时,JQ UI 按钮集似乎需要“输入”和“标签”标签,而且标签的“for”必须与输入的“id”匹配。
我可以使用 {{$index}} 使它们独一无二,如下所示:
<label for='algoOn{{$index}}'>ON</label>
<input type='radio' [... blah blah ..] id='algoOn{{$index}}'>
问题是在 DOM 准备好后调用 $().buttonset() 。我尝试了各种方法(dom.ready、链接功能等),但不得不在延迟 [ $('.buttonme').buttonset() ] 后调用它来触发页面上的所有按钮。哈基。
但是,我想将开/关按钮包装在指令中。在需要唯一 ID 方面仍然存在同样的问题。(如果您没有唯一的 ID,则在指令的链接功能中每次成功调用按钮都会变得越来越大)
但是...在模板中使用 {{$index}} 给了我一个神秘的语法错误:
Syntax error, unrecognized expression: [for=on{{$index}}] <onoffbtn prop="win.runstate" class="ng-isolate-scope ng-scope">
(即使代码中没有'for=on{{$index}}'!)
该指令是首选方法,但无法弄清楚如何解决这个问题。
其次,在指令中,所有单选按钮在第一次点击后都是同步的,但是当页面第一次加载时,指令中的按钮都是空白的。它不会立即将自己设置为模型。我想在链接函数中做到这一点(例如元素 -> 查找输入 -> 设置值)但是 Angular 已经重写了所有的“名称”和“ID”。
显示这两个问题的 Plunker 在这里: http ://plnkr.co/edit/DTy8dGsRDVVDnWZBYlqQ
谢谢!