【问题标题】:Angular directive where one of two attributes are required需要两个属性之一的 Angular 指令
【发布时间】:2015-10-28 03:14:45
【问题描述】:

如何编写需要ng-model 或k-ng-model 的指令?文档没有涵盖这一点:(

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

【问题讨论】:

    标签: angularjs kendo-ui angular-directive


    【解决方案1】:

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

    您无法告诉 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';
                }
            }
        };
    });
    

    【讨论】:

    • 嗯,当 k-ng-model 设置时,我在控制器 [1] 上得到一个空值。这被归一化为 kNgModel 对吗?
    • 按你说的规范化了,k-ng-model是在同一个元素上定义的吗myDir是在同一元素上定义的?
    • 是的,它是这样使用的:
      但我有预感这是剑道问题
    • 这很有可能,我实际上从未遇到过控制器最终会成为null 的情况。如果没有可选的必需指令,这将导致undefined,数组的长度总是等于require 数组的长度,你能把你的代码放在小提琴中吗?
    • 看来 k-ng-model 不是一个指令——所以这就解释了它
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签