Como criar um array com o modelo ng do AngularJS

Estou tentando criar um array segurando telefones, eu tenho esse código

  

Mas não consigo acessar o $ scope.telephone

A primeira coisa é primeiro. Você precisa definir $scope.telephone como um array no seu controller antes de começar a usá-lo na sua view.

 $scope.telephone = []; 

Para resolver o problema de o ng-model não ser reconhecido quando você acrescenta uma nova input – para que isso funcione, você tem que usar o serviço $compile Angular.

A partir da referência da API Angular.js em $ compile :

Compila uma cadeia HTML ou DOM em um modelo e produz uma function de modelo, que pode ser usada para vincular o escopo e o modelo.

 // I'm using Angular syntax. Using jQuery will have the same effect // Create input element var input = angular.element('
'); // Compile the HTML and assign to scope var compile = $compile(input)($scope);

Dê uma olhada no JSFiddle

Funciona bem para mim: http://jsfiddle.net/qwertynl/htb9h/

Meu javascript:

 var app = angular.module("myApp", []) app.controller("MyCtrl", ['$scope', function($scope) { $scope.telephone = []; // << remember to set this }]); 

Você pode fazer várias coisas. O que eu faria é isso.

Crie uma matriz no escopo que será sua estrutura de dados para os números de telefone.

 $scope.telephone = ''; $scope.numbers = []; 

Então no seu html eu teria esse

   

Em seguida, quando o usuário clicar em enviar, execute submitNumber (), que envia o novo número de telefone para a matriz de números.

 $scope.submitNumber = function(){ $scope.numbers.push($scope.telephone); } 

Uma maneira é converter seu array em um object e usá-lo no escopo (simulação de um array). Desta forma, tem o benefício de manter o modelo.

 $scope.telephone = {}; for (var i = 0, l = $scope.phones.length; i < l; i++) { $scope.telephone[i.toString()] = $scope.phone[i]; } 

   

e, em salvar, mude de volta.

 $scope.phones = []; for (var i in $scope.telephone) { $scope.phones[parseInt(i)] = $scope.telephone[i]; } 

Isso deve funcionar.

 app = angular.module('plunker', []) app.controller 'MainCtrl', ($scope) -> $scope.users = ['bob', 'sean', 'rocky', 'john'] $scope.test = -> console.log $scope.users 

HTML:

   

Exemplo plunk aqui

Como criar uma matriz de inputs com ng-model

Use a diretiva ng-repeat :

 

O DEMO

 angular.module("app",[]) .controller("ctrl",function($scope){ $scope.count = 3; $scope.telephones = []; }) .filter("range",function() { return (x,n) => Array.from({length:n},(x,index)=>(index)); }) 
    
{{telephones}}