Angular指令,其中需要两个属性之一

时间:2015-08-05 11:14:17

标签: angularjs kendo-ui angular-directive

如何编写需要ng-modelk-ng-model的指令?文档没有涵盖这个:(

app.directive('myDir', function () {
    return {
        require: 'ngModel || kNgModel',
        // omitted
    };
});

1 个答案:

答案 0 :(得分:3)

您需要将它们作为字符串数组传递。

您无法告诉Angular其中至少有一个需要可用,因此请将它们设置为可选项,如果其中一个可用,请检查链接功能。将您的代码更新为:

app.directive('myDir', function () {
    return {
        require: ['?ngModel', '?kNgModel'],
        link: function(scope, element, attrs, controllers){
            if(!controllers[0] && !controllers[1]){
                throw 'myDir expects either ng-model or k-ng-model to be defined';
            }
        }
    };
});