为什么我的for-loop在控制台中工作,而不是在我的Helper中工作?

时间:2017-04-17 20:04:50

标签: javascript for-loop meteor

我对我的代码发生了什么感到困惑。 当我在Chrome控制台中运行此代码片段(以下代码)时,它会按照设计成功运行。但是当它在应用程序中运行时,它无法按设计运行。

使用此代码段的意图是检查selectedItemIDSet数组的内容是否存在于TotalOfallIds数组的总数中。如果确实如此,则应该弹出一个Yes,否则返回No

 var selectedItemIDSet = Session.get('selectedItemIDSet'); 
 console.log (selectedItemIDSet);

yeilds上面的console.log()函数:

[“GttzCQLzMeqj”,“yzML7ZLvkWkjBBvq5”,“2HwJhHyjDhDogJK”]

var TotalOfallIds =  buyList.find().fetch().map(function(u) { return u._id; });

console.log (TotalOfallIds);

yeilds上面的console.log()函数:

EkebEek7KH8mdpNXg,LZJKA8S3wYNwHakzE,ikrbCDuttHrwkEcuv, yzML7ZLvkWkjBBvq5,e72HwJhHyjDhDogJK,GttzCQLzMeqjJP4Ae, XzGxS3LDtJ4DrXSdc,FJDhf7mzCxX4CKThe,TaTg6hf3Gok5NsWYp, NhDXRMnLWpwfAkWzJ,nG9TsoScYGFbEuerr,8CdapJoeSxSScHKFs, EsjSJfSgatrYTEnDK

 var noOfloops = selectedItemIDSet.length;
 var selectedItemId = this._id;
 var allclicked;

for(var i = 0; i < noOfloops; i++ ) {
var clickedImg = selectedItemIDSet[i];
allclicked = TotalOfallIds.indexOf(clickedImg) > -1; 

console.log("May: " +allclicked);
    if (allclicked == 1 ) {
        alert("Yes! " );
    //  return "selectedItem";
        }
   else {   
    alert("No! ");
    //return "";
    }}

以上在控制台中运行得很好,但是在我的template.helper中,for循环似乎无法循环(三次)通过selectedItemIDSet数组,但循环(13次)通过所有{{ 1}}属性,它似乎只是针对TotalOfallIds检查GttzCQLzMeqj属性!

这对我没有任何意义!

在我的template.helper中找到我的代码。

TotalOfallIds

对于详细程度感到抱歉!

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我通过将if条件代码从原始if (allclicked == 1 )更改为if (selectedItemId.indexOf(clickedImg) != -1)来解决了该问题。它仍然没有任何意义,为什么它可以在控制台中工作,但不能在代码中工作。

所以...如果条件代码为:

,则完全正常工作
if (selectedItemId.indexOf(clickedImg) != -1) {

                alert("Yes! " +clickedImg  );

                return "selectedItem";

    }


else {
//          alert("No! ");
     }