Что мне нужно: следующий код - очень простой пример, показывающий список элементов с помощью директивы ng-repeat
. Однако при открытии сайта появляется только {{product}}
.
<!DOCTYPE html>
<html lang="en" data-ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>Some Title</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" media="screen">
</head>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>
<div class="container">
<div
data-ng-repeat="product in products"
data-ng-if="$index % 3 == 0"
data-ng-init="products=['soda','beer','water','milk','wine']" class="row">
<div class="col-xs-4"
data-ng-repeat="product in products.slice($index, ($index+3 > products.length ? products.length : $index+3))"> {{product}}</div>
</div>
</div>
</body>
</html>
Ошибка в консоли: это то, что показано на консоли. Не знаете, почему приложение не настроено должным образом, поскольку оно установлено в теге html.
Error: [$injector:modulerr] Failed to instantiate module myApp due to:
[$injector:nomod] Module 'myApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
Фактический вопрос: почему переменная product
не содержит элемент из списка?
То, что я пробовал до сих пор: много, но я совершенно не знаком с JavaScript, поэтому не могу сказать, как дальше двигаться дальше.
Похоже, вы не подключили угловое приложение. Я предполагаю, что у вас нет никаких контроллеров или даже приложений в файле javascript. Как минимум вам нужно будет сделать следующую строку кода
var myApp = angular.module('myApp', []);
<script>var myApp = angular.module('myApp', []);</script>
Если у вас нет объявления углового модуля, вам не нужно писать имя приложения, т.е. myApp
См. Работу DEMO
Я не получаю то, чего вы пытаетесь достичь, нарезанный предметами. Возможно, для этого вам понадобится использовать угловой фильтр. Объясните подробно, что именно вы хотите достичь, чтобы получить помощь от людей.
<div ...
скажем так, код говорит: <div data-ng-repeat="product in products">{{product}}</div>
Помимо настройки самого углового приложения, еще одна проблема заключается в том, что ng-repeat
оценивается до ng-init
.
ng-repeat
указывает экземпляры элемента (div
), который должен быть создан. После создания для каждого из них оценивается ng-init
. Первоначально нет продуктов, поэтому вообще не создается элемент, поэтому ng-init
вообще не будет вызываться.
Одним из решений для этого было бы поместить ng-init
в родительский элемент, такой как ваш контейнер div
. Но обычно вы хотели бы поставить такой код в свой контроллер и не использовать ng-init
.