Je me demande donc comment déclarer plusieurs valeurs dans un seul ng-init, sans avoir à créer un hachage étrange, auquel je dois toujours accéder spécifiquement.
donc fondamentalement je voudrais
<div ng-init="a = 1, b = 2">{{a}}</div>
et je dis que j'aimerais éviter d'avoir à faire
<div ng-init="unecessary_bs = {a: 1, b: 2}">{{unecessary_bs.a}}</div>
Cependant le raisonnable:
<div ng-init="a = 1, b = 2">{{a}}</div>
ne semble pas fonctionner.
Remerciements anticipés
javascript
angularjs
Cosmin
la source
la source
"a = 1, b = 2"
ne serait pas raisonnable puisque son javascript, et les points-virgules sont ceux qui séparent les déclarations, mais l'idée est la mêmeRéponses:
Utilisez une fonction, bien plus lisible:
ng-init="init()"
Et:
$scope.init = function() { $scope.a = 1; $scope.b = 2; }
Ou, si vous devez, séparez les variables en ligne par un point-virgule:
ng-init="a = 1; b = 2"
la source
ng-init="c = a + b; a = 1; b = 2"
et voir ce que le résultatc
est - Meilleure estimation, il va de gauche à droite.Parfois, ce n'est pas idéal de mettre les variables dans une fonction. Par exemple, votre backend est en express et vous effectuez le rendu d'un fichier en utilisant jade.
Avec Express.js, vous pouvez envoyer des variables locales au html. Angular peut accepter ces variables avec
ng-init=""
En utilisant ";" on peut avoir plusieurs variables
Exemple
ng-init=" hello='world'; john='doe' "
la source
Je préfère envelopper avec la variable d'objet init:
<div ng-init="initObject = {initParam: 'initParamValue', anotherOne: 'value'}"></div>
la source
<div ng-app="app"> <div ng-controller="TodoCtrl"> <ul> <li ng-repeat="todo in todos" ng-init='initTodo = init(todo)'> <span class="done-{{todo.done}}">{{todo.text}} | and todo.text via init:{{initTodo}}</span> </li> </ul> </div>
ET
var modulse = angular.module("app",[]); modulse.controller("TodoCtrl", function ($scope) { $scope.todos = [ {text:'todo1'}, {text:'todo2'}]; $scope.init = function (todo) { return todo.text; }; });
la source