编辑PLUNKER示例:http://plnkr.co/edit/WuiCAmMwbQnC0n197LSJ?p=preview 在示例" sa"应检查并保持检查状态。检查时间很短,然后失去检查状态。我现在不知道为什么?
我使用经典的旧时尚基于按钮的导航标签菜单与Angular-UI-Router,它运作良好。每次单击选项卡都会获得其URL。
如果用户手动将网址放入浏览器的地址栏并按回车键,则会显示正确的网址内容,也可以。
但我的标签菜单对地址栏上的手动更改没有反应。应检查相应的单选按钮。因此,我写了一个指令:
.directive ('checkIfMe', function (){
return {
link: function (scope, e, a) {
////////////////
if (currentUrl == currentNaviElement) {
console.log("Yes it is");
a.$set("checked", true);
}
}
}
我可以检测到正确的单选按钮,我看到了#34;是的,"我想将其checked属性设置为true。我试过了:
e.g。当前单选按钮的ID是" navRadio_sa"
a.$set("checked", true);
a.checked = true;
$('#'+a.id+'').prop("checked",true);
他们都没有工作。但它我在firebug控制台中尝试它
$('#navRadio_sa').prop("checked",true);
它有效。我的错误在哪里?
最后但并非最不重要的是,这是:
答案 0 :(得分:0)
试试这个
.directive('checkIfMe', function ($timeout) {
return {
link: function (scope, e, a) {
scope.my.info.e.push(e);
scope.my.info.a.push(a);
console
$timeout(function(){
if(a.id == "navRadio_sa") {
e.prop("checked", true);
var me = (a.id).replace("navRadio_","");
}
}, 10);
}
}
});
e变量是元素本身的jQuery对象。您可以像使用jQuery对象一样使用它。
我将它包裹在10毫秒的超时时间,以便在操作dom之前完成ng-repeat时间。由于竞争条件,IT看起来之前没有工作。通过设置超时,它可以缓解这个问题。