2016-06-20 4 views
0

У меня есть 4 типа подматрицы, которые могут отображаться в моем родительском шаблоне. Предположим, что это разные типы ввода в форме. Я получаю некоторые данные с сервера и хочу, чтобы эти шаблоны (выберите поле ввода с параметрами) с полученными данными.Как подать подшаблон с данными в AngularJS?

Я хотел бы использовать что-то вроде этого:

<ng-include src="'./path/to/template/input/' + vm.data.type + '.html'"></ng-include> 

Но я хочу использовать этот шаблон несколько раз с различными данными для него. Как это:

<select> 
     <option ng-repeat="option in myOptionsData">{{option.text}}</option> 
</select> 

Я вроде должен быть недееспособным назвать эту часть пользовательского интерфейса, как функции с параметром (myOptionsData сверху) для данных. Как это разрешено правильно? Я прочитал о новом контроллере, где данные будут переданы службой, но мне кажется очень трудным создать службу для каждого типа подматрицы. Я что-то упускаю?

ответ

0

Это вроде просто, вы могли бы использовать в HTML что-то вроде:

<ng-include src="vm.resolveUrl(vm.data.type)"> 
</ng-include> 

Таким образом, вы можете сделать это в вашем контроллере:

$scope.resolveUrl = function(param) { 
    return "./path/to/template/input/" + param + ".html" 
} 

Более правильно способ решить эту проблему это часть кода, которая более проста в обслуживании, а также более читаемая. Поэтому дайте мне знать, если это сработает для вас!

+0

Нет, это не проблема. Я хочу данные внутри моей подтемы. Я редактировал свой вопрос с примера. – mrpool89

0

Я нашел ответ в сообщении this. Решение состоит в том, чтобы дать ng-include в ònload`attribute с данными, как это:

<ng-include src="'./path/to/template/input/' + vm.data.type + '.html'" onload="myOptionsData=vm.someData"></ng-include> 

Он отлично работает, я бы скорее хотел бы знать whethere есть лучшее решение.