Передача объектов в директиву из HTML

0

У меня есть директива с областью выделения, которая получает элементы от своего родителя:

scope: {
  items: '=?items'
}

Например, если у меня есть:

$scope.items = [
  {id: 1, description: 'foo'},
  {id: 2, description: 'bar'},
]

Я могу передать это так:

<my-directive items = "items"></my-directive>

Проблема в том, что у меня не всегда есть элементы, аккуратно упакованные в объект, и есть ситуации, когда я хочу передавать случайные данные. Например:

<my-directive items = "[ {id: 5, description: {{someScopeVar.someTextProp}}} ]"></my-directive-items>

Приведенный выше код не работает. Можно ли это сделать? Это АБСОЛЮТНО ужасная практика?

Изменение: я просто добавил новую переменную в родительскую область, которая упаковывает то, что мне нужно, в объект, завернутый в массив (потому что директива принимает массив). Сейчас это чисто теоретический вопрос.

2 ответа

1
Лучший ответ

Редактировать:

<my-directive items = "[ {id: 5, description: {{someScopeVar.someTextProp}}} ]"></my-directive-items>

Для того, чтобы:

<my-directive items = "[ {id: 5, description: someScopeVar.someTextProp} ]"></my-directive-items>
  • 0
    Хм, догадался, я упустил очевидное, предполагая, что это не сработает, спасибо.
  • 0
    Если мой ответ вам подходит, пожалуйста up vote и accept . Если вы не можете down vote
Показать ещё 1 комментарий
0

вы можете получить случайный объект с функцией

scope: {
  items: '&'
}

в контроллере

$scope.items = [
  {id: 1, description: 'foo'},
  {id: 2, description: 'bar'},
]

$scope.getRandom = function(){
     // do something here ( wrap object in array, get random object etc)
     // return $scope.myWrapedObject
}

,

<my-directive items = "getRandom()"></my-directive>
  • 0
    Это не то, что я собираюсь на всех.
  • 0
    обновить мой ответ. Вы можете сделать что-нибудь внутри функции
Показать ещё 1 комментарий

Ещё вопросы

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