archakov06
@archakov06
Frontend-разработчик (ReactJS)

AngularJS ng-click не работает?

Если использовать $scope.showOrder отдельно, то работает нормально. Но, если поместить в ng-repeat, то нет никакой реакции.

orders.controller.js
app.controller('MakeOrders', ['$scope', '$compile', function($scope, $compile) {

    $scope.orders = OrdersArr;

    $scope.setOS = function(s){
    	return (s=='123') ? 'iOS' : 'Android';
	}

	$scope.setPayStatus = function(s){
    	return s ? 'оплачено' : 'не оплачено';
	}

	$scope.setId = function(i){
		a = '00000';
		return a.substr(0,5-i.toString().length)+i;
	}

	$scope.showOrder = function(id){
		$('.col-lg-3').css('width','30%');
		var title_id = '00000'.substr(0,5-id.toString().length)+id;
		$('.arrow-back').show();
		$('.panel-header h1').text('Заказ №'+title_id);
		$('.panel-search-box,.panel-content').hide();

      	         var compiledeHTML = $compile("<div order-Info></div>")($scope);
      	         $(".panel-content").after(compiledeHTML);
    }
}]);

app.directive('orderInfo', function() {
	return {
	  templateUrl: '/res/admin/order-info.html'
	};
});


index.html
<div ng-controller="MakeOrders" class="panel-order-table">

				<table>
					<tbody>
						<tr ng-click="showOrder(1);"><th>№ ЗАКАЗА</th><th>ДАТА И ВРЕМЯ</th><th>ПЛАТФОРМА</th><th>СУММА</th><th>СТАТУС</th></tr>
						<tr ng-click="showOrder({{order.id}});" class="panel-order-row" ng-repeat="order in orders">
							<td>{{ setId(order.id) }}</td>
							<td>{{order.delivery_time | timestampToDate}}</td>
							<td>{{ setOS(order.client_id) }}</td>
							<td id="order-td-summa">
								<span>{{order.amount}} руб.</span>
								<span class="paid">{{ setPayStatus(order.pay_status) }}</span>
							</td>
							<td id="order-td-status">
								<span class="sprite-icon order-icon-1"></span>
								<span onclick="Orders.StatusBox(true,this);">Принят в обработку</span>
								<div id="dropdown-status" class="dropdown-status">
									<ul>
										<li><span>Принят в обработку</span></li>
										<li><span>Ожидает доставки</span></li>
										<li><span>Доставлено</span></li>
										<li><span>Анулировано</span></li>
									</ul>
								</div>
							</td>
						</tr>
						
					</tbody>
				</table>

			</div>


Как видно, есть в одном - showOrder(1); и он работает. Как исправить, чтобы работало и то, что в ng-repeat?
  • Вопрос задан
  • 563 просмотра
Решения вопроса 1
archakov06
@archakov06 Автор вопроса
Frontend-разработчик (ReactJS)
Нашел в общем решение. StackoverFlow помог.

Вместо showOrder({{order.id}}); надо showOrder(order.id);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lega
Ошибки в консоль смотрите, ng-click не работает с интерполяцией, нужно js выражение:
ng-click="showOrder(order.id);"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы