Pergunta simples: como posso definir um valor de escopo em html, para ser lido pelo meu controlador?
var app = angular.module('app', []);
app.controller('MyController', function($scope) {
console.log($scope.myVar);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='app'>
<div ng-controller="MyController" app-myVar="test">
{{myVar}}
</div>
</div>
JSFiddle: http://jsfiddle.net/ncapito/YdQcX/
my-var="foo"
quando o chamasse. Observe o uso de hífen em vez de camelCase. Nota:foo
aqui é avaliado , se você não quiser que use '@' na definição do escopo para acessar o valor do atributo.Respostas:
ng-init
não funciona quando você está atribuindo variáveis dentro do loop. Usar{{myVariable=whatever;""}}
O final
""
para que a expressão Angular seja avaliada para qualquer texto.Então, você pode simplesmente chamar
{{myVariable}}
para gerar o valor da sua variável.Achei isso muito útil ao iterar várias matrizes aninhadas e queria manter minhas informações de iteração atuais em uma variável em vez de consultá-la várias vezes.
fonte
{{}}
apenas para gerar uma única variável, não para atribuir variáveis. Eu diria que stackoverflow.com/a/16799763/814160 é mais correto (menos código JS na visualização).ngInit
pode ajudar a inicializar variáveis.exemplo jsfiddle
fonte
Crie uma diretiva chamada
myVar
come chamá-lo assim:
Observe em particular a referência do caso camel na diretiva ao nome da marca hifenizada.
Para obter mais informações, consulte "Noções básicas sobre transclusão e escopos" aqui: - http://docs.angularjs.org/guide/directive
Aqui está um Fiddle que mostra como você pode copiar valores de atributos para variáveis de escopo de várias maneiras diferentes dentro de uma diretiva.
fonte
var-nick='my' var-nick2='test'
. A menos que você possa pensar em uma maneira de implementá-lo com as diretivas que vou usarng-init
scope: {varNick: '@', varNick2: '@'}
Você pode definir valores de html assim. Não acho que haja uma solução direta do angular ainda.
fonte
<div style="display: none">
no entanto.Você pode usar
ng-init
como mostrado abaixoe usar a variável de escopo local em outras seções:
fonte
A variável é inicializada após o controlador, então você precisa vigiá-la e quando ela não inicializar, use-a.
fonte
Gostei da resposta, mas acho que seria melhor que você criasse uma função de escopo global que lhe permitiria definir a variável de escopo necessária.
Portanto, no globalController, crie
e então em seu arquivo html chame-o
Isso permitirá que você use $ scope.myVar em seu respectivo controlador
fonte
Se você não estiver em um loop, você pode usar ng-init, senão você pode usar
o "" não permite exibir seu var
fonte