Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
Javascript 将隔离作用域设置为变量_Javascript_Angularjs_Angularjs Directive_Angularjs Scope - Fatal编程技术网

Javascript 将隔离作用域设置为变量

Javascript 将隔离作用域设置为变量,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我不确定这是否确实可行,但基本上我正在尝试将指令上的隔离范围设置为一个变量,该变量将从控制器中的数组中拉入 指令: app.directive('ydConfig', function($log) { return { restrict: 'E', scope: { tag: '=' }, templateUrl: function(element, attrs) { re

我不确定这是否确实可行,但基本上我正在尝试将指令上的隔离范围设置为一个变量,该变量将从控制器中的数组中拉入

指令:

app.directive('ydConfig', function($log) {
    return {
        restrict: 'E',
        scope: {
            tag: '='
        },
        templateUrl: function(element, attrs) {
              return attrs['template'];
        }
    };
});
控制器中的阵列:

$scope.configHead = ['style', 'color', 'glass', 'details'];
$scope.activeTabs = ['style'];
$scope.configType = $scope.activeTabs[0];
HTML:


基本上,configHead是一个数组,其中包含yd config最终将使用的所有作用域,用户通过切换循环yd config。activeTabs通常包含一个对象,但有时在yd config正在更改范围和数据时包含两个对象。configType存在,因此我可以将当前活动的作用域作为目标并在DOM中访问它

在我的HTML中,是否有一种方法可以将标记隔离范围中的“样式”更改为configType?我尝试过{{configType}有前缀$scope和没有前缀$scope,我也尝试过没有双花括号的{configType},但我总是得到

如果我的yd配置是完全通用的,我如何将configType放入ng中?目前,我在DOM中一个接一个地配置了4个yd,每个yd都有不同的标记和ng if(直到我创建这个票证之前,还有不同的类)

我的最佳选择是创建一个返回configType的函数,并且只针对指令中的那些部分的函数吗


我已经从前面的问题中了解到了这一点,所以我知道这是可能的,但为什么我在尝试相同的方法时会出现错误?

您所尝试的方法应该是有效的。您可以将
$scope.configType
传递给带有
tag=“configType”
的指令,并在ng if like so
ng if=“isTabOpen(configType)”

var-app=angular.module('app',[]);
应用程序控制器('ctrl',函数($scope){
$scope.configHead=['style','color','glass','details'];
$scope.activeTabs=['style'];
$scope.configType=$scope.activeTabs[0];
$scope.isTabOpen=功能(选项卡){
返回$scope.activeTabs.indexOf(tab)!=-1
}
});
应用程序指令('ydConfig',函数($log){
返回{
限制:'E',
范围:{
标记:'='
},
/*templateUrl:函数(元素,属性){
返回属性['template'];
}*/
模板:“{tag}}”
};
});


当configType设置为父作用域时,它与具有隔离作用域的指令没有任何关系,对吗?在将其添加到“tag”时,这会改变语法吗?我现在已经到了一个地步,除了作用域之外,所有的指令都在工作,但是仅仅因为这个原因,不得不在DOM中列出该指令4次,这似乎是一种耻辱。如果它是完全通用的,它会更干净:/Ok,这里的问题显然与我预期的略有不同。我现在也得到了dups错误,而不是语法错误。我再次尝试运行它,但是我使用了示例中的模板,而不是我的templateUrl,当我单击切换时,它会输出正确的标记。我现在想知道这是否与我调用模板的方式有关,或者与实际模板本身有关。模板:
  • {{item.title}}
  • 我不明白您试图重复的内容仅仅是一个字符串值?你可能想发布一篇关于你目前所掌握的内容的jsfiddle。好吧,对不起,这就是我要做的:从本质上说,JS现在工作正常,但我没有正确地定位内容,所以即使模板在那里,内容也没有填充它。我应该如何定位内容?当我说“重复”时,我的意思是我曾经拥有:
    等,而我想拥有:
    <yd-config tag="style" template="/app/views/yd-config-item.html" ng-if="isTabOpen('style')" ng-class="{right : direction, left : !direction}" ng-animate class="{{configType}}"></yd-config>