将唯一 ID 分配给 link 中的指令属性

Assign unique id to directive attribute from link

在我的 AngularJS 应用程序中,我有一个购物车指令,我需要将指令 link 方法中的唯一 ID 分配给 id 属性,同时设置值来自公开控制器的其他属性。

指令

.directive('ngcartAddtocart', ['ngCart', function(ngCart){
    return {
        restrict : 'E',
        controller : 'CartController',
        scope: {
            id: '=',
            name:'@',
            price:'@',
            data:'='
        },
        transclude: true,
        link:function(scope, element, attrs){

            var ID = (function () {
                return '_' + Math.random().toString(36).substr(2, 9);
            }())

            attrs.id = ID;

        }
}])

查看

<ngcart-addtocart 
    id="" <!--THIS I WANT TO DYNAMICALLY ADD ID FROM DIRECTIVE -->
    name="item.name" <!-- PROVIDED BY CONTROLLER -->
    price="item.price" <!-- PROVIDED BY CONTROLLER -->
    data="object.data" <!-- PROVIDED BY CONTROLLER -->
></ngcart-addtocart>

问题

从指令 link 方法向指令动态添加 ID 的最佳方法是什么?

使用element.attr("id",ID);

    link:function(scope, element, attrs){

        var ID = (function () {
            return '_' + Math.random().toString(36).substr(2, 9);
        }())

        ̶a̶t̶t̶r̶s̶.̶i̶d̶ ̶=̶ ̶I̶D̶;̶
        element.attr("id",ID);
    }

有关详细信息,请参阅