Angularjs ng src使用随机发生器显示多个图像-Ionic 1/Cordova
我用的是爱奥尼亚1/科尔多瓦。我试图从数组中选择一个随机图像显示在页面上(这样每次用户访问时图像都会不同)。我让它每次从数组中随机选择一个URL,但它会在停止之前在页面上翻转3到4个图像。我知道这是ng src的预期摘要行为,但如何在第一个周期后防止或停止它 HTML:Angularjs ng src使用随机发生器显示多个图像-Ionic 1/Cordova,angularjs,cordova,ionic-v1,Angularjs,Cordova,Ionic V1,我用的是爱奥尼亚1/科尔多瓦。我试图从数组中选择一个随机图像显示在页面上(这样每次用户访问时图像都会不同)。我让它每次从数组中随机选择一个URL,但它会在停止之前在页面上翻转3到4个图像。我知道这是ng src的预期摘要行为,但如何在第一个周期后防止或停止它 HTML: 据我所知,您正试图让每一个周期只显示一次所有内容。我不是为angular设置的,但这里有一个模拟函数可以帮助您。对于Angular,您可能必须包含$window才能访问localStorage,否则这将适用于vanilla js
据我所知,您正试图让每一个周期只显示一次所有内容。我不是为angular设置的,但这里有一个模拟函数可以帮助您。对于Angular,您可能必须包含$window才能访问localStorage,否则这将适用于vanilla js
const answers = [
"images/1500.gif",
"images/1500.gif",
"images/2000.gif",
"images/2500.gif",
"images/3000.gif",
"images/3500.gif",
"images/4000.gif",
"images/4500.gif"
];
let randomImage = function (staticArray = [], storeName = "store") {
let result = '';
let _seen = localStorage.getItem(storeName);
let _seenArr = JSON.parse(_seen);
let allArr = [];
staticArray.forEach(function (element, index) {
allArr.push(index);
});
let rIdx = Math.floor(Math.random() * staticArray.length);
if (_seen === null) {
localStorage.setItem(storeName, JSON.stringify([rIdx]));
result = staticArray[rIdx];
} else {
let _unseen = allArr.filter((el) => !_seen.includes(el));
rIdx = Math.floor(Math.random() * _unseen.length);
result = staticArray[_unseen[rIdx]];
_seenArr.push(_unseen[rIdx]);
localStorage.setItem(storeName, JSON.stringify(_seenArr));
result = staticArray[_unseen[rIdx]];
if (JSON.parse(localStorage.getItem(storeName)).length >= staticArray.length) {
localStorage.removeItem(storeName);
}
}
return result;
};
console.log(randomImage(answers));
我创建了一个分离函数,首先拾取图像,然后调用该变量,从而使其工作。它现在每次加载一个随机图像。这是更新的JS,以防它帮助其他人
var winningGif = null;
$scope.resultgif = function() {
var sendGif = winningGif;
return sendGif;
};
function getRandomGif() {
var answers = [
"images/1500.gif",
"images/1500.gif",
"images/2000.gif",
"images/2500.gif",
"images/3000.gif"
]
var randomAnswer = Math.floor(Math.random() * answers.length);
winningGif = answers[randomAnswer];
}
我让它工作了。。。我创建了一个单独的函数,首先随机选取图像,下面是更新的JS代码,以防其他人遇到类似问题。
const answers = [
"images/1500.gif",
"images/1500.gif",
"images/2000.gif",
"images/2500.gif",
"images/3000.gif",
"images/3500.gif",
"images/4000.gif",
"images/4500.gif"
];
let randomImage = function (staticArray = [], storeName = "store") {
let result = '';
let _seen = localStorage.getItem(storeName);
let _seenArr = JSON.parse(_seen);
let allArr = [];
staticArray.forEach(function (element, index) {
allArr.push(index);
});
let rIdx = Math.floor(Math.random() * staticArray.length);
if (_seen === null) {
localStorage.setItem(storeName, JSON.stringify([rIdx]));
result = staticArray[rIdx];
} else {
let _unseen = allArr.filter((el) => !_seen.includes(el));
rIdx = Math.floor(Math.random() * _unseen.length);
result = staticArray[_unseen[rIdx]];
_seenArr.push(_unseen[rIdx]);
localStorage.setItem(storeName, JSON.stringify(_seenArr));
result = staticArray[_unseen[rIdx]];
if (JSON.parse(localStorage.getItem(storeName)).length >= staticArray.length) {
localStorage.removeItem(storeName);
}
}
return result;
};
console.log(randomImage(answers));
var winningGif = null;
$scope.resultgif = function() {
var sendGif = winningGif;
return sendGif;
};
function getRandomGif() {
var answers = [
"images/1500.gif",
"images/1500.gif",
"images/2000.gif",
"images/2500.gif",
"images/3000.gif"
]
var randomAnswer = Math.floor(Math.random() * answers.length);
winningGif = answers[randomAnswer];
}