我是AngularJS中对此指令的新手,需要一些帮助才能使这个javascript函数正常工作。当我在angular指令之外使用普通JavaScript时,没关系。但现在我遇到了一些问题。
可以使用函数class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Row(
children: <Widget>[
new Expanded(child: new MyCoolWidget()),
new Expanded(child: new MyCoolWidget()),
]
)
}
}
,我收到错误消息:
removeClass不是函数
它适用于navigate
,所以我不明白为什么删除不能在这里工作。
addClass
<ol class="content">
<li>
"{{ myData.quotes[0].quote }}"
<br /> <div class="quoteLine"></div> <span class="boldText"> {{ myData.quotes[0].person }} </span>
</li>
<li>
"{{ myData.quotes[1].quote }}"
<br />
<div class="quoteLine"></div> <span class="boldText"> {{ myData.quotes[1].person }} </span>
</li>
</ol>
答案 0 :(得分:1)
removeClass
方法是jQuery或jQLite方法。原始元素需要包装:
var items = $element.find('.content li');
var counter = 0;
var amount = items.length;
var current = items[0];
$element.addClass('active')
function navigate (direction) {
̶c̶u̶r̶r̶e̶n̶t̶.̶r̶e̶m̶o̶v̶e̶C̶l̶a̶s̶s̶(̶'̶c̶u̶r̶r̶e̶n̶t̶'̶)̶
//WRAP raw element
var $current = angular.element(current);
$current.removeClass('current')
counter = counter + direction
答案 1 :(得分:0)
首先,current
变量不是jQLite
个实例,因此为了使用removeClass
,您必须使用jQLite
包装它,如下所示:
angular.element(current).removeClass('current')
其次,变量items
可能是空的,因为$element.find('.content li')
如果使用纯jQLite
则无法使用,因为如果是这样,方法{{1将仅限于通过标记名称查找。因此,如果您需要使用该复杂选择器,则应尝试find
或使用旧学校$element[0].querySelectorAll('.content li')
。
答案 2 :(得分:0)
如果你愿意,你可以,而不是使用Javascript操纵类来显示和隐藏你的文本引号,将你的引号传递给你的指令,并让指令本身找出要显示的内容和不显示的内容(可能是更多&#34;角度方式&#34;做事。)
例如,类似于以下指令:
app.directive('myCarousel', function () {
return {
scope: {
quotes: '<'
},
templateUrl: 'myCarousel.html',
controllerAs: 'ctrl',
controller: function($scope) {
let ctrl = this;
ctrl.previousQuote = previousQuote;
ctrl.nextQuote = nextQuote;
let selectedQuoteId = 0;
ctrl.selectedQuote = $scope.quotes[selectedQuoteId];
function previousQuote() {
if (selectedQuoteId !== 0) {
selectedQuoteId--;
ctrl.selectedQuote = $scope.quotes[selectedQuoteId];
}
}
function nextQuote() {
if (selectedQuoteId + 1 < $scope.quotes.length) {
selectedQuoteId++;
ctrl.selectedQuote = $scope.quotes[selectedQuoteId];
}
}
}
}
});
myCarousel.html模板:
<div>
<ol class="content">
<li>
"{{ctrl.selectedQuote.quote}}"
<br /> <div class="quoteLine"></div> <span class="boldText"> {{ctrl.selectedQuote.person}} </span>
</li>
</ol>
<button ng-click="ctrl.previousQuote()"><</button>
<button ng-click="ctrl.nextQuote()">></button>
</div>
这是弄清楚当前选择了哪个引用对象(selectedQuote)然后在模板中输出它。
然后你可以从任何地方传递你的报价数据。
如果您有兴趣,可以在此Plunker中查看该动作:https://plnkr.co/edit/vA80sTdjwClWvF4T4dbd