Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 从指令添加ng show而不直接编译或使用模板_Angularjs - Fatal编程技术网

Angularjs 从指令添加ng show而不直接编译或使用模板

Angularjs 从指令添加ng show而不直接编译或使用模板,angularjs,Angularjs,给定的HTML格式为 {{{item.Description}} 我想从我的指令中动态添加ng show。看来这并不像可能的那么容易。如果my directive是一个元素而不是一个属性,那么它可以通过一个模板来完成,但是遗憾的是,对于属性不存在相同的支持 我的第一次尝试使用了$compile服务,如中所述。但是,该方法依赖于指令的优先级高于任何其他指令,因此在ng repeat之前应用 我目前的方法是手动复制ng show的源代码: .directive('myDirective', ['$a

给定的HTML格式为

{{{item.Description}}

我想从
我的指令
中动态添加
ng show
。看来这并不像可能的那么容易。如果
my directive
是一个元素而不是一个属性,那么它可以通过一个模板来完成,但是遗憾的是,对于属性不存在相同的支持

我的第一次尝试使用了
$compile
服务,如中所述。但是,该方法依赖于指令的优先级高于任何其他指令,因此在
ng repeat
之前应用

我目前的方法是手动复制
ng show
的源代码:

.directive('myDirective', ['$animate', function ($animate) {
    function toBoolean(value) {
        if (typeof value === 'function') {
            value = true;
        } else if (value && value.length !== 0) {
            var v = angular.lowercase("" + value);
            value = !(v == 'f' || v == '0' || v == 'false' || v == 'no' || v == 'n' || v == '[]');
        } else {
            value = false;
        }
        return value;
    }

    return {
        scope: true,
        link: function(scope, elem, attrs) {
            scope.$watch("myWatchExpression",
                function(isActive) {
                    $animate[toBoolean(isActive) ? 'removeClass' : 'addClass'](elem, 'ng-hide');
                }
            );
        }
    };
}])
然而,这显然不是一个好的长期解决方案,因为它需要在内部角度发生变化时更新自定义指令

是否有任何方法可以请求作为可注入指令的指令并将其应用于元素(而不中断更高优先级的指令,如
ng repeat

编辑以提供上下文

我试图创建的指令是针对选项卡式项目的。理想情况下,标记如下所示:

<tab-container>
    <button ng-repeat="tab in tabs" tab-button="{{tab.id}}">{{tab.name}}</button>
    <div ng-repeat="tab in tabs" tab-view="{{tab.id}}"><ng-include src="{{tab.template}}"/></div>
</tab-container>

{{tab.name}

因此,我希望
ng单击
选项卡按钮上的
ng类
指令,以及
选项卡视图上的
ng显示

我认为您不需要做您正在做的事情。为什么不能始终添加
ng show
指令,并使用相同的逻辑控制它为真/假。或者在ng repeat上使用一个过滤器,这样它甚至不会显示。我无法确切地告诉您何时需要动态添加ng show以及它将具有什么价值,但如果您告诉我们您希望它如何工作,那么我们可以建议alternative@JoseM我编辑了这个问题,给出了上下文,就像Jose说的,听起来你应该在每个元素上设置
ngShow
,并控制其表达式的值。当然,我可以,但我在这里创建了一个抽象。我觉得AngularV1中的指令基本上是不可组合的,这是一种耻辱——我希望他们能正确地理解它v2@AlexG当前位置我真的不明白你所说的“可组合”是什么意思。但是想要在不编译的情况下使用指令(即通过一个称为编译的过程增强HTML功能的东西),就像说“我希望一个函数在不被调用的情况下执行-我希望他们能够修复JS soit”(imo)。。。