Ao usar o modelo NG hoje em Ionic, o valor obtido no controlador correspondente é indefinido. Eu costumava obtê-lo ao usar a ligação do modelo NG do AngularJS, o que é embaraçoso e decidiu descobrir. Vamos dar uma olhada em uma demonstração abaixo.
Ao aprender a ligação bidirecional de dados do modelo AngularJS NG, obtemos o valor correspondente do modelo NG através do código a seguir:
Demo1
<div ng-app = "myApp" ng-controller = "myctrl"> nome: <input ng-model = "name"> {{name}} <butão ng-click = "show ()"> shoname </butão> </div>JS correspondente
<SCRIPT> var app = angular.module ('myApp', []); app.Controller ('myctrl', function ($ scope) {$ scope.show = function () {console.log ($ scope.name); // você pode obter corretamente o valor inserido no console.log.log (allPros (allPros); allprpos (obj) {// usado para salvar todos os nomes e valores de atributos var props = ""; obj [p] + ";";Ao imprimir o objeto $ SCOPE, você pode ver que suas propriedades contêm um par de nome de valor-chave. Mas quando estávamos no projeto iônico, também conseguimos assim:
Demo2
<ion-view view-title = "chats"> <ion-content> <div> nome: <input ng-model = "name"> {{name}} <butter ng-click = "show ()"> shoname </butão> </div> </ion> </tion-view>O ChatSctrl correspondente no controlador correspondente.js de Ionic:
angular.module ('starter.controllers', []).Nenhum nome foi encontrado na propriedade $ SCOPE impresso. O console impresso indefinido, mas o {{name}} na página pode ser emitido normalmente. Por que isso? Estima -se que muitos iniciantes iônicos tenham encontrado essa situação em seus projetos. Os dados do AngularJs são inválidos de bidiretas de AngularJs em Ionic? Se eu escrever desta maneira:
Demo3
<ion-view view-title = "chats"> <content ng-controller = "myChatctrl"> <div> nome: <input ng-model = "name"> {{name}} <botão ng-click = "show ()"> shoname <//</div> </ion-click = "show ()">Redefine um mychatctrl no controller.js:
angular.module ('starter.controllers', []).Dessa forma, todos deveriam ter visto algumas pistas. De fato, a raiz de todos os problemas é o escopo. Ao usar comandos diretivos como o modelo NG, NG-REPEAT, etc., ele criará um escopo. De fato, isso envolve o tempo da criação do controlador iônico. O escopo do escopo do controle criado na rota de visão iônica é maior que o escopo do escopo MyChatctrl na Demo2 abaixo; Acontece que esses dois escopos são diferentes, o que explica por que o valor obtido pela Demo2 acima é indefinido. Encontrei um problema, e se eu resolver esse problema?
O escopo do escopo pode ser herdado e as propriedades do objeto JS também são herdadas, para que possamos alterar o Demo2 e definir um valor padrão no ChatSctrl agora: agora:
var $ scope.name = {text: ""};
Entrada de modelo NG na página:
<ion-view view-title = "chats"> <content ng-controller = "mychatctrl"> <div> nome: <inspum ng-model = "name.text"> {{name}} <butt ng-click = "show ()"> shoname </button> </div> </inn-click = "Show ()">Depois de fazer isso, clique no botão e descubra que o valor de $ scope.name pode ser impresso normalmente. Se você não quiser usar as propriedades do objeto para fazer isso, poderá vinculá -lo ao escopo do escopo dos pais ao vincular, e o Ctrl do Demo2 permanece inalterado, e o código na página é alterado para o seguinte:
<ion-view view-title = "chats"> <content ng-controller = "mychatctrl"> <div> nome: <inspum ng-model = "$ parent.name"> {{name}} <butt ng-click = "Show ()"> shoname </button> </div> </div> </eung </div> </iion} <butknick = "Show ()"> shoname </button> </div>Isso também obterá o valor de $ scope.name e o problema será resolvido. Se esse problema ocorrer, o mesmo pode ser feito. Se você tiver outras soluções, deixe uma mensagem.
Artigo de referência
O modelo ng de Ionic não pode obter um problema de valor
Entenda o escopo dos angulares
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.