2016-07-27 3 views
0

Я использую библиотеку ocLazyLoad для ленивой нагрузка угловых файлов JavaScript/HTML и ввести их в мой модуль, как этот фрагмент кода:Как получить бритву вынесенного HTML от angularjs с ngRoute

$routeProvider.when('/Home/Index', { 
     templateUrl: '/app/Index.html', 
     controller: 'IndexController', 
     resolve: { 
      deps: [ 
       '$ocLazyLoad', function ($ocLazyLoad) { 
        return $ocLazyLoad.load({}, { 
         name: 'mix', 
         files: [ 
          '/app/IndexController.js' 
         ] 
        }); 
       } 
      ] 
     } 
    }); 

С таким подходом я получаю статический html-файл из файловой системы. Но я хочу установить templateUrl: '/ Home/Index', поэтому метод индексации в Home controller выполняется, а razor отображает указанную страницу .cshtml, а затем возвращает html с угловыми директивами.

Вот что я хочу сделать. Бритва вид:

<p> 
    @foreach (var item in new List<int> { 1, 2, 3, 4, 5 }) 
    { 
     @item 
    } 
</p> 

<div ng-controller="IndexController as vm"> 
    <p>{{vm.text}}</p> 
    <p>{{3 + 3}}</p> 
</div> 

Ответ сервера:

<p>12345</p> 
<div ng-controller="IndexController as vm"> 
    <p>{{vm.text}}</p> 
    <p>{{3 + 3}}</p> 
</div> 

Наряду с этим HTML, ленивые нагруженные IndexController.js Тогда угловой будет делать свою работу.

Возможно ли это?

ответ

0

Да, это возможно. Все, что вам нужно сделать, это запомнить основы. Угловая ничего не знает о вашей серверной стороне, если вы не разоблачите ее.

$routeProvider.when('/ng-Home/Index', { //It can't be the same as the Action URL since it won't work the way you want it to. 
    templateUrl: '/Home/Index', //Add the html of your static page into the razor view. 
    controller: 'IndexController' 
    } 
}); 

Внутри углового позвонит со стороны сервера либо обычный HTML-файл или HTML, выведенного с сервера (в ответ на HTML, в отличие от JSON или XML). Угловому не важно, является ли это файлом или ответом HTML. Маршрутизация будет просто принимать ответ HTML и выводить его.

Обычно это может стать беспорядочным, поскольку не все созданные Razor HTML будут совместимы с угловым способом обработки моделей. Но это может помочь вам в достижении каких-либо удобных возможностей, таких как использование связывания и минимизации из ASP.NET. Или добавление частичного представления непосредственно в ваш HTML.

По вашему мнению Razor, вы можете добавить свой JS файлов следующим образом:

@Scripts.Render("~/Path/To/Script") 

Надеется, что это помогает!