Javascript Angularjs指令中的作用域

Javascript Angularjs指令中的作用域,javascript,angularjs,angularjs-scope,angular-directive,Javascript,Angularjs,Angularjs Scope,Angular Directive,假设我有这样的设置: 指令: angular.module('App.directives').directive( 'createCourseStep1' , function(){ return { restrict : 'E', replace: 'true', templateUrl : 'lib/courses/templates/create-course-step-1.html', scope :{ slideNum : '@'

假设我有这样的设置:

指令:

angular.module('App.directives').directive( 'createCourseStep1' , function(){
return {
    restrict : 'E',
    replace: 'true',
    templateUrl : 'lib/courses/templates/create-course-step-1.html',
    scope :{
        slideNum : '@'
    },
    link : function(scope , elem , attrs){
      scope.slideNum = attrs.slidenum;
    }
}})
视图(呈现的指令):


是否有一种方式我不必在视图中将当前幻灯片称为“$parent”?我之所以使用此设置,是因为我难以访问视图中的“attrs.slideNum”。如果我正在打印值
{{slideNum}
,但当我想
时,它就可以工作了。。。ng show=“showStep(slideNum)”
该值未定义。我问这个问题是因为我在该指令中使用了另一个指令,这意味着我必须执行$parent.$parent,只是想知道这是否是最佳实践。谢谢大家!

等等,为什么指令本身要显示自己?为什么不在隔离作用域中添加一个
visible
属性,并让使用HTML(父HTML)确定该级别的逻辑?只需将这两个参数传递给指令即可。一个可以是静态的(即不需要$watched进行更改),我认为传递这两个参数不会解决它,因为在内部,我使用的是来自父范围的更多变量,但我明白你的观点,只要我传递我将要使用的参数,它就会解决它。这可能是一个解决办法。龙游,你能解释一下你的意思吗?我不明白。您的意思是要执行此逻辑-$parent.currentSlide==slideNum在指令中,并从那里控制visible属性?“在指令中,我使用的是来自父范围的更多变量”-您不应该这样做。隔离作用域(您正在使用)意味着来自外部的所有作用域属性都通过属性提供给指令,这使得指令是自包含的。等等,为什么指令本身试图显示自己?为什么不在隔离作用域中添加一个
visible
属性,并让使用HTML(父HTML)确定该级别的逻辑?只需将这两个参数传递给指令即可。一个可以是静态的(即不需要$watched进行更改),我认为传递这两个参数不会解决它,因为在内部,我使用的是来自父范围的更多变量,但我明白你的观点,只要我传递我将要使用的参数,它就会解决它。这可能是一个解决办法。龙游,你能解释一下你的意思吗?我不明白。您的意思是要执行此逻辑-$parent.currentSlide==slideNum在指令中,并从那里控制visible属性?“在指令中,我使用的是来自父范围的更多变量”-您不应该这样做。隔离作用域(您正在使用)意味着来自外部的所有作用域属性都通过属性提供给指令,这使得指令是自包含的。
<div class="create-course-info-wrapper" ng-show="$parent.currentSlide == slideNum"></div>
$scope.currentSlide = 1;