Ваша привязка будет случайной, она будет отличаться каждый раз, когда угловой будет выполнять наблюдателя этой привязки.
Однако, Угловая только останавливает цикл дайджеста, когда достигает стабильного состояния, когда все наблюдатели возвращают одно и то же значение дважды подряд, что никогда не происходит с вашим.
Одним словом, вы не можете привязывать случайное значение или что-либо, что всегда отличается друг от друга, в Угловой привязке. Вы должны сгенерировать свою картину один раз и, возможно, повторно рандомизировать ее на основе какого-либо события.
$scope.randomPicture = generateRandomPicture();
И
<img ng-src="{{randomPicture}}">
UPDATE: И если вы хотите, чтобы обновить картинку каждые 3 секунды в течение, например, вы можете добавить
// Generate a new random picture every 3 seconds
$interval(function() {
$scope.randomPicture = generateRandomPicture();
}, 3000);
Update 2: Теперь, Я лучше понимаю вашу проблему, я бы предлагал сохранить все как есть, но использовать ::
как как показано ниже, при использовании, по крайней мере, Углового 1.3. Таким образом, у вас будет одно случайное изображение, созданное для каждого пользователя, но сгенерированное только один раз.
В более ранней версии Angular или, альтернативно, вы можете создать изображение детерминиста на пользователя, который будет чувствовать себя случайным. например, в вашем HTML использования:
<img ng-src="{{randomPicture($index)}}">
И в контроллере
var rand1 = Math.round(Math.random()*10);
var rand2 = Math.round(Math.random()*10);
$scope.randomPicture = function(index) {
var PATH = 'assets/images/';
var image = (index+rand1*rand2)%13 + 1;
var ext = '.jpg';
var randomPic = PATH + image + ext;
return randomPic;
};
Обратите внимание, что если вы используете Угловое 1.3+ и только хотите создать картину один раз, вы можете использовать
ОНТ время связывания с использованием
::
синтаксиса (используя один и тот же код для
randomPicture
):
<img ng-src="{{::randomPicture()}}">
попробуйте это src = "randomPicture()" –
Я пробовал этот путь, но, к сожалению, не работал ... – adam
Следующий обновленный ответ floribon отлично работает и исправляет ошибку 10 $ digest() в моем случае. – adam