Jquery 无法从包含的文件中访问元素

Jquery 无法从包含的文件中访问元素,jquery,angularjs,angularjs-directive,Jquery,Angularjs,Angularjs Directive,我试图做最简单的事情,从JSON开始,我重复一个菜单,其中定义了某个滚动目标。在相同的重复元素上,我设置了一个指令,并将目标作为参数传递给我的指令函数。在这个函数中,我只想访问元素,但由于某种原因,我无法访问元素 我得到的只是: [context: document, selector: "#skills"] [context: document, selector: "#projects"] [context: document, selector: "#about"] [context: d

我试图做最简单的事情,从JSON开始,我重复一个菜单,其中定义了某个滚动目标。在相同的重复元素上,我设置了一个指令,并将目标作为参数传递给我的指令函数。在这个函数中,我只想访问元素,但由于某种原因,我无法访问元素

我得到的只是:

[context: document, selector: "#skills"]
[context: document, selector: "#projects"]
[context: document, selector: "#about"]
[context: document, selector: "#form"]
当我应该得到类似的测试时,我做了:

[header#site-header.container-fluid.ng-scope, context: document, selector: "#site-header"]
我尝试访问的所有这些选择器都来自ng包含的文件,如下所示:

<div ng-include="'views/templates/skillset.html'"></div>
<div ng-include="'views/templates/projects.html'"></div>
<div ng-include="'views/templates/about.html'"></div>
<div ng-include="'views/templates/form.html'"></div>
以下是我的JSON:

{
  "menu": {
    "skillset": {
      "scrollTo": "#skills"
    },
    "projects": {
      "scrollTo": "#projects"
    },
    "about": {
      "scrollTo": "#about"
    },
    "contact": {
      "scrollTo": "#form"
    }
  }
}
标记:

<ul class="nav navbar-nav" id="site-nav">
  <li ng-repeat="item in menu" class="menu-item text-center" 
      data-smooth-scroll="{{item.scrollTo}}">
  </li>
</ul>

除非通过隔离作用域定义对其的引用,否则不会根据角度表达式对angular指令的属性求值。你的指令应该是

core.directive('smoothScroll', [function() {
  return {
    restrict: 'A',
    scope: {
        smoothScroll: '='
    }
    link: function(scope, element, attrs) {
      var dest = scope.smoothScroll;
      //do smooth scroll
      console.log(dest);
    }
  }
}]);

用法应该是
data smooth scroll=“item.scrollTo”
不带大括号

它会引发以下错误:[$parse:syntax]语法错误:Token'item.scrollTo'是意外的,应在表达式[{{item.scrollTo}]的第3列处[:]从[item.scrollTo}]开始。表达式不需要大括号,但仍然获得与以前相同的输出:/I将scrollTo放入指令函数,但无法通过$(scope.smoothScroll)访问它;出于某种原因,原因很简单<代码>范围。smoothScroll是一个字符串。。例如,根据只包含
“#技能”
的代码。做平滑卷轴应该做你心目中的平滑卷轴的诀窍:)
core.directive('smoothScroll', [function() {

  return {
    restrict: 'A',
    link: function(scope, element, attrs) {

      var dest = $(attrs['smoothScroll']);
      console.log(dest);

    }
  }
}]);
core.directive('smoothScroll', [function() {
  return {
    restrict: 'A',
    scope: {
        smoothScroll: '='
    }
    link: function(scope, element, attrs) {
      var dest = scope.smoothScroll;
      //do smooth scroll
      console.log(dest);
    }
  }
}]);