4

Smarty を使用して構築されたページを含む AngularJS アプリがあります。ページの上部にはng-aggタグ パラメータがあり、基本的な AngularJS テンプレートがコンパイルされており.run、モジュールのメソッドが実行されていますが、コントローラーが呼び出されていません。

html の開始

<!DOCTYPE html>
<html ng-app="myapp">
...

$routeProvider

angular.module('myapp', function($routeProvider, $locationProvider) {
  $routeProvider
    .when('/index.php?page=tutorial', {controller: 'MyappTutorial'})
    .when('/index.php?page=home', {controller: 'MyappHome'})
    .when('/index.php?page=login', {controller: 'MyappLogin'})
})

チュートリアルコントローラー

var MyappTutorial = function ($scope, $location) {
    console.log('tutorial');
}

ページindex.php?page=tutorialにアクセスすると、Angular ページ テンプレートがビルドされ、メソッド内のconsole.log()myapp.run()がトリガーされますが、チュートリアル コントローラーは実行されません。

これをデバッグするにはどうすればよいですか。routeProvider が間違っていると思いますが、どのコントローラーが使用されているかを確認する方法はありますか?

JavaScript コンソールでエラーが発生しません。

これは、Mac 上のローカル開発 Ubuntu 仮想マシンから Chrome で実行されています。

4

1 に答える 1

3

プロジェクトの構成方法を再考することをお勧めします。私はあなたが持っているようなものを試しましたが、それは私には正しくないようです (そして、それを機能させることができませんでした)。

私はAngularでphp(仕事の外)と.net(仕事で)を使用していますが、しばらく前に結論を出したのは、ボックス内で作業する方がはるかに簡単であるということでした。 、php テンプレートを放棄し、angular をクライアント側として使用し、php をサーバー側として使用します。index.php を使用できないと言っているわけではありませんが、パーシャル (php または html) を使用できます。html と js を使用する、はるかに単純な構造が見つかります (チュートリアルのルーティングと複数のビューをチュートリアルで確認してください)。パーシャルを使用する場合 (特に # と html5mode を使用する場合) に注意する必要があることに注意してください。

しかし、あなたは私の意見を求めていませんでした - そして、私はそれにうんざりするかもしれません... あなたの質問に答えるために。持っている構造を保持したい場合は、テンプレートのコントローラーをコンテナに取り付けた内側に配置する必要があると思います。

お役に立てれば

――段

于 2012-10-29T16:46:56.883 に答える