Я строю директиву Angular
, которая отображает список элементов. Список элементов предоставляется функцией из собственной директивы scope
. Ниже приведена базовая версия того, что я делаю (listOpts
должен быть fn и не является статическими данными). Когда шаблон скомпилирован, listOpts
не оценивается, поэтому шаблон возвращает пустой ul
. Когда я помещаю listOpts
fn в родительский controller
, он оценивает его. Но я не хочу помещать функцию listOpts
в контроллер из-за SRP (принцип единой ответственности); функция listOpts
относится к директиве list
, а не к controller
. Должно быть, я неправильно понимаю, как работают директивы или когда скомпилирован шаблон? Должен ли я помещать listOpts
fn в controller
fn с директивой?Угловая директива Функция вызова из собственного объема
@app.directive "list",() ->
restrict: "E"
link: (scope, el, attrs, ctrl) ->
scope.listOpts =()->
return [1,2,3]
template: "
<ul ng-repeat='item in listOpts()'>
<li>{{item}}</li>
<ul>
"
ng-repeat не предназначен для работы таким образом, используйте статический список и при необходимости измените список. если вы все еще хотите попробовать это, просто добавив область действия: {} в свою директиву, следует изолировать ее для вас. – Delta
@ Delta Я не думаю, что это проблема. Как я уже сказал, функция, обеспечивающая работу массива, работает, когда функция находится в родительской области, но не изнутри этой директивы. Как я уже сказал, я не могу использовать статический список. И я уже пытался добавить изолированную область, я думаю, проблема в том, что я не понимаю, как работает компиляция шаблонов для директив. – kittyminky