2016-05-19 4 views
0

Я работаю над угловым приложением, используя пустой шаблон веб-приложения asp.net, и у меня есть проблема с использованием ng-app, когда я его использую, и пусть он пустое, routeProvider не получает экземпляр, но когда я указываю ng-app = "myApp" на имя моего модуля, содержимое тела начинает повторяться до бесконечного цикла. Я уверен, что я что-то основное отсутствует, но эта проблема сводит меня с ума благодаряng-app, выполняющий скрипт до бесконечности

вот мой HTML код

это главный

<a href="#/view1">view1</a> 

<div> 
    <div ng-view></div> 
</div> 
<script src="Scripts/angular.js"></script> 
<script src="Scripts/angular-route.js"></script> 
<script src="app.js"></script> 

и здесь код myApp

(function() { 
    'use strict'; 

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

    app.config([ 
     '$routeProvider', function ($routeProvider) { 
      $routeProvider.when('/', { 
       templateUrl: 'index.html', 
       controller: 'main' 
      }).when('/view1', { 
       templateUrl: 'view1.html', 
       controller: 'main' 
      }).otherwise({ 
       redirectTo: '/' 
      }); 
     } 
    ]); 

    app.controller('main', function ($scope) { 
     setTimeout(function() { 
      alert("from set"); 
     },10000); 
    }); 
})(); 
+0

Нет ничего, что могло бы сделать то, что вы говорите о бесконечном цикле. Показать больше кода и представления, вызывающего проблемы. Также обратите внимание на любые ошибки в консоли браузера – charlietfl

+0

, как вы указываете свое ng-приложение, где вы сказали, что у вас есть бесконечный цикл? – mtamma

ответ

3

проблема здесь заключается в том, что index.html не шаблон, который должен быть загружен в ng-app, это внешняя оболочка страницы. Вы загружаете все приложение внутри себя снова и снова, производя что-то вроде следующего:

<a href="#/view1">view1</a> 

<div> 
    <a href="#/view1">view1</a> 

    <div> 
    <a href="#/view1">view1</a> 

    <div> 
     <a href="#/view1">view1</a> 

     <div> 
     //... more and more loaded here 
     </div> 
     <script src="Scripts/angular.js"></script> 
     <script src="Scripts/angular-route.js"></script> 
     <script src="app.js"></script> 
    </div> 
    <script src="Scripts/angular.js"></script> 
    <script src="Scripts/angular-route.js"></script> 
    <script src="app.js"></script> 
    </div> 
    <script src="Scripts/angular.js"></script> 
    <script src="Scripts/angular-route.js"></script> 
    <script src="app.js"></script> 
</div> 
<script src="Scripts/angular.js"></script> 
<script src="Scripts/angular-route.js"></script> 
<script src="app.js"></script> 

... по существу навсегда.

Вместо этого вы должны загружать только шаблоны в свои маршруты.

+0

спасибо большое, что было действительно полезно .. –

2

Ваш маршрут по умолчанию загружает страницу в себя?

$routeProvider.when('/', { 
     templateUrl: 'index.html', <----- ??? 
     controller: 'main' 
    }) 
+0

Да точно. Маршруты должны загружать только частичные htmls, так как загрузка основного html (который уже загружается) вызывает бесконечный рекурсивный цикл. Удивленный внутренний ng-view не игнорируется, хотя – Spidy

+0

спасибо вам, ребята, проблема была решена, и мне очень помогли –

+0

@ahmedGomaa Чтобы помочь людям с подобными проблемами, пожалуйста, один из вопросов будет правильным, если это поможет вам. В противном случае добавьте ответ самостоятельно, описывая, как вы исправили проблему. –