2015-06-04 161 views
0

我剛開始使用Angularjs,我試圖構建一個指令。
我的js文件:Angularjs指令沒有顯示

var app = angular.module('myCars',['ngResource']); 

app.controller('CarController', function (Post) { 
     var b = Post.query(function() { 
      console.log(all); 
     }); 
     this.cars = b; 
}); 
     app.directive("carCritics", function() { 
       return { 
        restrict: 'E', 
        templateUrl: '~/Views/Home/car-critics.cshtml' 
       }; 
      }); 
我CSHTML文件

它看起來像這樣:

<car-critics></car-critics> 

我在網上了解指令讀取大量的單證和我不能看到我在做什麼錯誤。任何時候我啓動應用程序時,我的指令中的部分都不會顯示。我會真正appriciate任何類型的幫助。

+2

看來,在'templateUrl' PARAM路徑不正確 – Adeel

+0

您需要提供更多的上下文。我看到指令最常見的地方是:當您忘記將它們作爲使用指令的模塊的依賴項時,或者忘記加載定義指令的腳本時。 – Cheruvian

+0

@Cheruvian我如何將它們包含爲依賴關係,缺少什麼上下文? – JJJJ

回答

0

你不會馬上從Views文件夾中抓取.cshtml。您必須創建一個ActionResult,然後返回「汽車critics.cshtml」,像這樣:

public class HomeController 
    { 
     public ActionResult CarCritics() { 

      return View("car-critics"); 
     } 
} 

和指導應該是:

app.directive("carCritics", function() { 
     return { 
      restrict: 'E', 
      templateUrl: '/Home/CarCritics' 
     }; 
    }); 
+0

與網址中的主持人合作。謝謝! – JJJJ

1

templateUrl不正確

~是服務器知道的事情(例如使用Server.MapPath)但客戶端不知道(客戶端如何知道服務器的根目錄?)。

你需要把沒有~的完整路徑。

+0

但是,當我使用'car-critics.cshtml'。 – JJJJ

+0

這是由於2個原因:1.這不是視圖的完整路徑。 2.位於View目錄內的視圖無法作爲資源訪問(您需要創建一個操作,以返回每個視圖的視圖)。你會想創建一個名爲StaticViews的不同目錄並在其中添加視圖。路徑將是StaticViews/viewname.cshtml。 –