你如何“要求”angularjs指令的属性?

时间:2014-04-29 16:38:08

标签: angularjs angularjs-directive

假设我有一个名为' myDirective'的指令。我如何要求该指令的所有实例必须具有特定的属性,例如bellow:

<div data-my-directive data-my-variable='blue'></div>

2 个答案:

答案 0 :(得分:3)

我不确定您是否可以直接要求属性,但是您可以检查是否提供了值,如果没有则抛出异常。例如,来自ng-repeat:

link: function($scope, $element, $attr, ctrl, $transclude){
    var expression = $attr.ngRepeat;
    var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),
        trackByExp, trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn,
        lhs, rhs, valueIdentifier, keyIdentifier,
        hashFnLocals = {$id: hashKey};

        if (!match) {
            throw ngRepeatMinErr('iexp', "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",
            expression);
        }
}

答案 1 :(得分:0)

我认为最好的方法是检查属性,看看是否&#34; myVariable&#34;存在并抛出异常,如果它没有, 但是如果你必须要求在指令定义中唯一的方法是使myVariable成为另一个指令并使用require:&#39; myVariable&#39;在最初的指令上,例如myDirective。