2

Twitter Bootstrap を使用して AngularJS Web アプリに取り組んでいます。テンプレートとコントローラーは 2 回実行されます。なぜ彼らがこれを行うのかわかりません。

以下は、index.html ファイル内のコードの一部です。

<html data-ng-app="app" ng-controller="AppCtrl">    
<div class="container ng-view" data-ng-view></div>

...

<script>
(function (angular) {
"use strict"; // jshint ;_;
// http://coenraets.org/blog/2012/02/sample-application-with-angular-js/
angular.module('app', ['filters', 'angular', 'currency'])
.config(function($routeProvider) {
    var _view_ = 'view/';
    $routeProvider.
        when('/app',                {templateUrl:_view_+'app/index.html',       }).
        when('/account/settings',   {templateUrl:_view_+'app/settings.html',    }).
        when('/profile/:profile_ID', {templateUrl:_view_+'app/profile.html',    controller:ProfilePageCtrl}).
        when('/discuss',            {templateUrl:_view_+'discuss/discuss.html',     controller:DiscussCtrl}).
        when('/',                   {templateUrl:_view_+'page/home.html'        }).
        when('/:page',              {templateUrl:_view_+'page.html',            controller:PageCtrl}).
        otherwise({redirectTo:'/'});
})
...

誰でも提案を提供できますか? テンプレートとコントローラーは 2 回実行する必要がありますか?

2012 年 12 月 4 日更新: コントローラーの有無にかかわらず、テンプレートが 2 回実行されていることがわかりました。テンプレートにコントローラーがある場合、コントローラーも 2 回実行されます。

4

2 に答える 2

6

交換

<div class="container ng-view" data-ng-view></div>

<div class="container ng-view"></div>
于 2012-12-05T14:51:31.413 に答える
2

私は同様の問題を抱えていました.私のコントローラーは2回呼び出されていまし$routeProviderng-controller. 結局のところ、私は以下を使用してページにリンクしていました:

<a href='#somepage'>

それ以外の

<a href='#/somepage'>

最初にを使用するようにリンクを書き直した#/ところ、うまくいきました。#somepageAngular は に「リダイレクト」していたと思いますが#/somepage、コントローラーを両方とも呼び出しています。

#/リンクの先頭で既に使用されているようですが<base href="/ ">、上部にも a があります (末尾のスペースもあります)。多分それはAngularを混乱させ、望ましくないリダイレクトを引き起こしていますか?

于 2013-01-28T12:54:27.107 に答える