在Angular Directives中设置属性:单选按钮>设置> checked = true

时间:2015-12-24 17:02:07

标签: angularjs set directive attr

编辑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);

它有效。我的错误在哪里?

最后但并非最不重要的是,这是:

enter image description here

1 个答案:

答案 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看起来之前没有工作。通过设置超时,它可以缓解这个问题。