2015-05-09 2 views
0

мой взгляд использует мой ProjectController:Вызов функции из другого вложенного контроллера

<tbody ng-controller="ProjectController"> 
    <tr ng-repeat="task in tasks"> 
     <td class="col-md-3">{{ task.id}}</td> 
     <td class="col-md-2">{{ task.taskType.name }}</td> 
     <td class="col-md-2">{{ task.description }}</td> 
     <td><div ng-bind-html="callMethodFromTaskController(task)"></div></td> 
     <td><a href="#/tasks/{{ task.id }}" class="btn btn-xs btn-primary">Abrir</a></td> 
    </tr> 
</tbody> 

Как я могу назвать callMethodFromTaskController, функция, которая находится внутри TaskController стилизовать информацию?

+1

Вы не можете, контроллеры для поддержки представления и взаимозависимости не поддерживаются, если форма иерархии parent-child не используется с помощью 'scope'. Вам нужно переместить общую функцию в службу. – Chandermani

ответ

1

H-i, есть несколько способов сделать это.

Самое простое, что, возможно, работа положить callMethodFromTaskController() 's выход на task.methodOutput, а затем положить methodOutput в DIV: <div ng-bind-html="task.methodOutput"></div>

Там, вероятно, причина для вызова этого во время выполнения. Вместо того, чтобы помещать функцию на контроллер, вместо этого поставьте функцию на task. Это уже в рамках:

<div ng-bind-html="task.callMethodFromTaskController()"></div>

Я думаю, вы обнаружите, что более совместимы с угловым мышлением в долгосрочной перспективе.

Если что не работает. Тогда вы, вероятно, сделаете особый контроль. В этом случае подумайте об использовании «директивы» (проще и веселее, чем кажется).

В этом случае, вы бы передать задание директивы, как это:

<tbody ng-controller="ProjectController" ng-repeat="task in tasks"> 
    <taskDirective task="task"> 
</tbody> 

Вы можете узнать больше о директивах here.

+1

Директивы выполнили эту работу! –

+0

Ницца! Рад, что смог помочь :-) –

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