2012-10-29 66 views
4

我有一個AngularJS應用程序,使用Smarty構建頁面。頁面的頂部有ng-agg標籤參數和基本AngualarJS模板被編譯,並且我對我模塊的.run方法是運行的,但是我的控制器不被稱爲AngularJS控制器未加載

啓動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?頁=教程我我的角度頁面模板是建立在我myapp.run()方法的console.log()被觸發,但教程控制器沒有按不會跑。

我該如何去調試這個。我猜這是routeProvider出錯了,是否有一種方法可以檢查使用哪個控制器(如果有的話)。

我沒有收到我的JavaScript控制檯中的任何錯誤。

這是在Mac上從本地開發Ubuntu虛擬機在Chrome中運行的。

+1

我已經成功加入'NG-控制器= MyappTutorial'式標籤每個頁面來解決這個問題,但我認爲路線提供商讓我避免這樣做 –

+0

添加ng控制器='...'修復了我的問題 – xst

回答

3

我認爲你可能想重新考慮你如何構建你的項目。我嘗試了一些像你一樣的東西,這對我來說並不合適(並且無法使其工作)。

我正在使用php(在我的工作之外)和.net(在我的工作上),並且我回到了一段時間的結論,那就是它更容易在框內工作,意思是恕我直言)放棄聰明,放棄PHP模板和使用角作爲您的客戶端和使用PHP爲您的服務器端。它不是說你不能有一個index.php,但是,你可以使用partials(php或html)。你會發現一個更簡單的結構,你有html,js(在教程中查看tutorial routing and multiple views)。你應該認識到,當你使用partials的時候你需要注意的東西(特別是在使用#和html5mode時)。

但是,您並沒有要求我的意見 - 我可能會爲此付出代價...回答您的問題。我認爲如果你想保留你有的結構,那麼你應該把你的模板中的控制器連接到一個容器上。

希望這有助於

--Dan

+0

我想知道如何開始Smarty,但它對於使用可重複組件(如頁眉和頁腳)構建頁面非常有用。 –

+0

我仍然很聰明,但我使用bash腳本來構建靜態HTML頁面,現在一切都變得更加簡單。感謝丹的指導 –