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