2016-01-29 3 views
-1

Предположим, у меня есть нижний контроллер.Angularjs compile ng-controller html

myApp.controller('sampleController', ['$scope','$http', $compile',function ($scope, $http, $compile) { 

    $scope.name = 'vaibhav'; 
    var htmlString = '<div ng-controller="sampleController"> 
         <p> {{name}} </p> 
         </div>'; 

    var element = angular.element(htmlstring).scope(); 
    var compiledom = $compile(element); 

    console.log(compiledom); // I need parsed controller view here 
}); 

Окончательный вывод «compiledom» переменной должно быть:

<div ng-controller="sampleController"> 
    <p> vaibhav </p> 
</div> 

мне нужно использовать разобранный вид контроллера для создания другой динамической страницы.

Что-то не так в этом кодексе? Пожалуйста, помогите мне с правильным подходом.

+1

Контроллеры не предназначены для манипулирования DOM. Вам нужно сделать это в Директиве. – jbrown

+0

Это звучит как проблема XY. Объясните пример использования и проблему более высокого уровня, которую вы пытаетесь решить. Невозможно создать контроллер в представлении. Ваш код никогда не будет запущен, а контроллеры не будут использоваться для управления DOM – charlietfl

+0

@ jbrown. Если использование Директивы - это правильный подход, пожалуйста, скажите мне, как я могу это сделать? –

ответ

0

Лучший способ достичь этого - использовать директиву.

Сделайте это div шаблоном директивы. sampleController будет директивным контроллером, и в этом случае {{name}} поступит из сферы действия.

Пример: <dynamic-page name='vaibhav'></dynamic-page>

Реализация директивы будет выглядеть примерно так:

app.directive('dynamicPage', function() { 
    return { 
    restrict: 'E', 
    scope: { 
     name: '@' 
    }, 
    controller: function($scope) { 
     $scope.number = 10; 
    }, 
    template: '<div><p>{{name}} + {{number}}</p></div>' 
    } 
}); 

Plunker: https://plnkr.co/edit/ElcJQBEsesi4JwYxRJ9T?p=preview `

+0

мой код шаблона меняется каждый раз, и он слишком длинный. Могу ли я использовать шаблон URL? например, другая html-страница –

+0

Вы можете использовать шаблон шаблона – Chanthu

+0

Я обновил плункер, чтобы показать, как вы можете проходить в динамическом шаблоне страницы – Chanthu