Новичок в Angular. Что не так?

#javascript #angularjs

#javascript #angularjs

Вопрос:

Я следую руководству на Youtube…Я считаю, что я все сделал правильно, но он отказывается работать … На видео @ youtube это работает как заклинание, но я не могу заставить его работать локально. Есть какие-нибудь подсказки? На экране нет ошибки или даже результата. Это просто пустая страница.

в моем controller.js …

 var demoApp = angular.module('demoApp',[]);
//Routes
demoApp.config(function ($routeProvider){
$routeProvider
    .when('/view1',
    {
        controller : 'SimpleController',
        templateUrl : 'view1.html'
    })
    .otherWise('/',
    {
        redirectTo : '/view1'
    });
});

//Controllers
demoApp.controller('SimpleController' , function ($scope) {
    $scope.familyArray = [
    { name : 'Me ', city : 'London'},
    {name : 'Wife', city : 'St. Matheus'},
    {name : 'Son', city : 'Ipswich'}
];
});
 

в моем index.html . Я…

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" data-ng-app="demoApp">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>My Title</title>
</head>
<body>
<div>
    <div data-ng-view="">

    </div>
</div>
    <script src="./css_and_js/angular.min.js"></script>
    <script src="./css_and_js/controller.js"></script>
</body>
 

.. И, наконец, это мой view1.html …

 <div class="container">
Name:<br>
<input type="text" data-ng-model=filter."nameInput"><br><br>
Hello, {{name}}
<ul>
    <li data-ng-repeat="data in familyArray | filter : filter.nameInput | orderBy: 'city'">{{data.name}} - {{data.city | lowercase}}</li>
</ul>
Add Name : <br>
<input type="text" data-ng-model="new.name">
<br>
</ul>
Add City : <br>
<input type="text" data-ng-model="new.city">
<br>
<a href="#/view2">View 2</a>
 

Кроме того, я понятия не имею, как его отлаживать … на моей консоли Chrome это просто show: неперехваченный объект
в angular.min.js:6

Обновить…После получения некоторых предложений по изменению моего кода…На самом деле я сталкиваюсь с результатом пустой страницы без сообщения об ошибке на консоли. Позвольте мне обновить код:

controller.js: var demoApp = angular.module('demoApp',['ngRoute']);
//Routes
demoApp.config(function ($routeProvider){
$routeProvider
.when('/view1',
{
controller : 'SimpleController',
templateUrl : 'view1.html'
})
.otherwise('/',
{
redirectTo : '/view1'
});
});
//Controllers
demoApp.controller('SimpleController' , function ($scope) {
$scope.familyArray = [
{ name : 'Marco Jr', city : 'London'},
{name : 'Rosana Valkovics', city : 'São Matheus'},
{name : 'Fernando Valkovics', city : 'Ipswich'}
];
});

мой view1.html:

 `<div class="container">
Name:<br>
<input type="text" data-ng-model="filter.nameInput"><br><br>
Hello, {{name}}
<ul>
    <li data-ng-repeat="data in familyArray | filter : filter.nameInput | orderBy: 'city'">{{data.name}} - {{data.city | lowercase}}</li>
</ul>
Add Name : <br>
<input type="text" data-ng-model="new.name">
<br>
</ul>
Add City : <br>
<input type="text" data-ng-model="new.city">
<br>
<a href="#/view2">View 2</a>
</div>`
 

Мой index.html : Никаких изменений.

На самом деле исключений нет, но я все еще сталкиваюсь с пустой страницей:(

Комментарии:

1. не используйте уменьшенную версию angular для разработки. ваш angular.js файл включает в себя модуль маршрута?

Ответ №1:

Angular работает с HTML5. У вас неправильный doctype. Вам нужно:

 <!doctype html>
 

Кроме того, удалите xmlns="http://www.w3.org/1999/xhtml" свой html-тег.

Что касается отладки, вы никогда не должны использовать уменьшенную версию чего-либо для отладки.

Ответ №2:

Я считаю, что проблема в вашем view1.html , строка 3. Кавычки находятся в неправильном положении в data-ng-model, поскольку они должны окружать все «filter.nameInput».

Комментарии:

1. Это действительно ошибка! TYVM!!! Однако я все еще сталкиваюсь с теми же результатами: (Рано или поздно я верю, что смогу все решить с вашей помощью и помощью других ребят! тю!

Ответ №3:

Если ваше видео старое, и вы используете новую версию Angular.js у вас , вероятно , их нет $routeProvider . В какой-то момент команда angular $routeProvider вырвалась из основного angular.js файла и поместила его в отдельный модуль под названием ngRoute .

Вам нужно изменить определение вашего модуля следующим образом:

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

И вам нужно включить angular-route.js тег script.

 <script src="./css_and_js/angular-route.js">
 

Вот некоторая дополнительная информация о ngRoute

Комментарии:

1. тю!! Точно так же, как ответ Эдварда 🙂 Я считаю, что это правильный путь .. я все еще сталкиваюсь с проблемами … но я благодарен за хорошее руководство!

Ответ №4:

В вашем коде есть несколько ошибок и неверных предположений.

Новые версии angular требуют, чтобы ngRoute был объявлен как зависимость.

Зависимости:

вы должны добавить его в свой index.html например:

 <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.18/angular-route.js"></script>
 

и объявите зависимость в модуле:

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

Он все равно не будет работать, потому что у вас синтаксическая ошибка

 .otherWise('/',
 

должно быть

 .otherwise('/',
{
    redirectTo : '/view1'
});
 

Вы можете увидеть это вживую здесь

Комментарии:

1. Привет, Тай!!! Исключений больше нет.. Однако он по-прежнему показывает черную страницу:( даже в скрипке результата нет:( Но я все равно это ценю 🙂

2. Скрипка не имеет index.html … пожалуйста, будьте конкретны. Что такое «проблема»? Можете ли вы использовать «hello world» в partials вместо сложного синтаксиса angular?

3. как я уже говорил .. проблема в пустом экране. Простой пустой экран — никаких следов чего-либо, касающегося view1.