2016-04-17 6 views
0

В настоящее время у меня есть прецедент для того, чтобы иметь угловую возвращаемую случайную величину во внешнем контейнере маршрута с целью принуждения к откату кеша при выборе нового маршрута.как вывести случайное значение из модели angularJS

HTML:

<a ng-repeat="dx in rssFeeds" href="#/view/{{dx.name}}/{{rnd()}}"> 
    <img src='{{dx.icon}}'/>{{dx.name}} 
</a> 

JS:

$scope.rnd = function() { 
    return Math.random(); 
}; 

С тем, что Угловой работает это приведет угловатым взрываются с исключением, когда он решит, что точка зрения никогда не стабилизируется на множестве значения.

Существует аналогичный вопрос здесь: AngularJS - How to generate random value for each ng-repeat iteration

И хотя принятый ответ полная дрянь, второй самый голосовала ответ выглядит как это заняло бы меня 90% пути.

+0

угловой воли с все rnd в течение каждого цикла дайджест. Сгенерируйте число с помощью ng-init. – Jacob

+0

@Jacob, который не работает из-за того, как структурирован вид, он не обновляется при нажатии ссылки. Хотя оказывается, что я могу восстановить случайное число в событии ng-click, и он работает правильно. –

ответ

1

Вы можете сделать что-то вроде этого

<div ng-controller="MyCtrl"> 
    <a ng-repeat="item in array" href="#/view/{{item}}/{{rnd}}" ng-init="rnd = rnd()"> 
    {{item}} 
    </a> 
</div> 

контроллера

var myApp = angular.module('myApp', []); 

function MyCtrl($scope) { 
    $scope.array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
    $scope.rnd = function() { 
    return Math.random(); 
    }; 
} 

Вот working jsfiddle

Если вы хотите, чтобы предотвратить кэширование шаблона вы можете сделать

app.run(function($rootScope, $templateCache) { 
    $rootScope.$on('$routeChangeStart', function(event, next, current) { 
     if (typeof(current) !== 'undefined'){ 
      $templateCache.remove(current.templateUrl); 
     } 
    }); 
}); 
+0

Это не работает с моим прецедентом. Поскольку главное меню находится за пределами ng-view, оно не обновляется с помощью нового ng-init(), когда другие части обновления приложения. После того, как будет развернуто еще немного вокруг, случайное число может быть сгенерировано в событии ng-click. –

+0

Но этот код плохо пахнет. Какой маршрутизатор вы используете? –

+0

im, используя маршрутизатор по умолчанию, который поставляется с угловым. Его небольшая проблема с квадратным штифтом/круглым отверстием. –

Смежные вопросы