Como usar o “ng-repeat” dentro do modelo de uma diretiva no Angular JS?

Sou novo no Angular JS e estou tentando criar uma diretiva personalizada que será usada como abaixo:

Corrompidos controlador será:

 $scope.cashAccountsColumns = [ {"field": "description", "title": "Description"}, {"field": "owner", "title":"Owner"}, {"field": "currentBalance", "title":"Current Balance" } ]; 

E o código da diretiva é:

 return { restrict : 'EA', transclude : false, templateUrl : 'html/linkedlist.html', scope: { listcolumns: "@" }, link : function(scope, element, attrs) { } } 

template é:

 
{{column.title}}

Mas isto não está funcionando. Eu não estou recebendo o valor de column.title na canvas, em vez disso, muitas linhas, conforme abaixo, são adicionadas ao DOM:

  

Passar um object inteiro com atributo não funcionará, você tem que usar a vinculação de caminho duplo. Basta alterar a vinculação de @ para = e modificar o código HTML abaixo para que funcione:

alterações no código da diretriz :

 // ... scope: { listcolumns: "=" }, // ... 

alterações no modelo :

  

@ Resposta de AjayBeniwal está correta, mas eu sinto que poderia usar alguma explicação adicional.

Como a documentação Angular aponta (na seção “Isolando o escopo de uma diretiva”), a opção de scope é um object que contém uma propriedade para cada binding de escopo isolada. Usamos isso para separar (isolar) o escopo dentro de uma diretiva do escopo externo e, então, mapear o escopo externo para o escopo interno da diretiva.

O nome de cada propriedade do object de scope corresponde à propriedade de escopo de isolamento de diretivas. No exemplo da pergunta, a única propriedade do object de scope é listcolumns . Por causa disso, também deve haver um atributo correspondente no html criando a diretiva:

 

No entanto, o nome da propriedade scope e o atributo da diretiva não precisam ter o mesmo nome. Podemos mapear esses dois valores assim:

 

 controller: function ($scope) { $scope.cashAccountsColumns = 'value'; }, scope: { moreDescriptiveName: "=shortName" }, 

Para casos em que o nome do atributo é igual ao valor que você deseja vincular dentro do escopo da diretiva, você pode usar essa syntax abreviada:

 

 controller: function ($scope) { $scope.cashAccountsColumns = 'value'; }, scope: { myName: "=" }, 

Além disso, neste exemplo, o valor do atributo da diretiva deve corresponder a uma propriedade do escopo externo da diretiva. Isso ocorre porque o = in =shortName usa a vinculação bidirecional de atributos do escopo externo para o escopo isolate, forçando o valor do atributo da diretiva a ser avaliado como uma expressão. Como essa resposta eloquentemente aponta, se quisermos passar uma string literal, podemos usar @ no lugar de = , ou considerar a propriedade de escopo isolada da diretiva com aspas duplas e simples:

 scope: { moreDescriptiveName: "@" }, 

OU