2015-06-04 2 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> 

Я прочитал много документаций в Интернете о директивах, и я не могу видеть, что я делаю неправильно. В любое время, когда я запускаю приложение, часть моей директивы не отображается. Я бы действительно предложил любую помощь.

+2

Похоже, что путь в 'templateUrl' парам неверен – Adeel

+0

Вам нужно предоставить больше контекста. Наиболее распространенными местами, которые я вижу в директивах, являются: когда вы забыли включить их в зависимость от модуля, использующего директиву, или если вы забудете загрузить скрипт, который определяет директиву. – Cheruvian

+0

@Cheruvian, как бы включить их в качестве зависимости и какой контекст отсутствует? – JJJJ

ответ

0

Вы не можете сразу взять захват .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

Это связано с двумя причинами: 1. Это не полный путь к виду. 2. Представления, которые находятся внутри каталога View, недоступны в качестве ресурса (вам нужно будет создать действие, которое возвращает представление для каждого представления). Вы хотели бы создать другой каталог под названием StaticViews и добавить туда вид. Путь будет StaticViews/viewname.cshtml. –

Смежные вопросы