我有一个列表,显示从一个分贝的单词查询,从那里我可以点击一个单词,它被推到另一个列表,我可以保存比。有了这个,我可以创建不同的词汇表。我想要做的是给这些单词另一种颜色,如果我已经把它们推到我的新名单上。比较两个数组,并使用ng样式在数组中标记相同的条目
为此,我使用我的控制器中的函数来比较两个列表与angular.foreach。如果wordFromQuery._id === wordOnNewList._id我给了单词另一个背景颜色与ng样式。
这里是我的代码:
查看
ng-repeat="word in searchWords" ng-click="addWordToSet(word)" ng-class="isInside(word)" ng-style="{ background: choosenWords.value == 'exist' ? 'lightgreen' : 'white' }"
我遍历词的查询(searchWords),并与addWordtoSet(字)我把它们推到我的其他阵列(这伟大工程) 。根据isInside函数的if语句,isInside(word)将执行angular.foreach来比较两个数组,并且ng样式应该提供不同的样式。
控制器
$scope.isInside = function (word) {
angular.forEach($scope.currentWordlist, function (item) {
if (item._id === word._id) {
$scope.choosenWords = {value: 'exist'};
} else {
$scope.choosenWords = {value: 'notOnList'};
}
});
};
的angular.forEach比较从两个阵列词语的currentWordList是我用addWordToSet推送的数组
会发生什么情况是,searchword数组上的一个单词获取绿色(以及+1的集合,因此如果arraypos。0中的单词恰好是arraypos 。1获得绿色)。
我怀疑我用ng-class元素做了所有的错误,但我没有找到另一个很好的机会来获得word._id的另一种方式。我在这里做了明显错误的事吗?
我会感激提示或提示。谢谢!
UPDATE
它的工作原理与addWordToSet功能相当精致:
$scope.addWordToSet = function (word) {
var exists = false;
angular.forEach($scope.currentWordlist, function (item) {
if (item._id === word._id) {
exists = true;
}
});
if (exists === false) {
$scope.currentWordlist.push(word);
}
};
我唯一需要的,我认为是不这样做的点击,但没有立即点击任何东西。是my ng-class="isInside(word)"
的正确选择吗?
如果我使用choosenWords没有对象我得到TypeErrors值没有设置。你是什么意思bei“通过部分初始化”,以及如何检查ng-modules的优先顺序? – d8ta
我相信当一个控制器被设置为partial的一部分时,会出现一个bug,那就是离子以前...优先级用于在编译指令之前对它们进行排序检出角度文档... – user3086298
嵌套模板称为偏好 – user3086298