Как получить бритву в HTML от angularjs с помощью ngRoute

0

Я использую библиотеку ocLazyLoad для ленивых загружаемых угловых javascript/html файлов и вставляю их в свой модуль, как этот фрагмент кода:

    $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 Затем угловой выполнит свою работу.

Можно ли это сделать?

Теги:
razor
asp.net-mvc
ngroute
oclazyload

1 ответ

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")

Надеюсь, поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню