在ng-init中声明多个值

时间:2014-05-28 19:03:54

标签: javascript angularjs

所以我想知道如何在单个ng-init中声明多个值,而不必创建一些奇怪的哈希,然后我需要始终专门访问。

基本上我想要

<div ng-init="a = 1, b = 2">{{a}}</div>

我说我想避免做

<div ng-init="unecessary_bs = {a: 1, b: 2}">{{unecessary_bs.a}}</div>

然而合理:

<div ng-init="a = 1, b = 2">{{a}}</div>

似乎不起作用。

预期致谢

4 个答案:

答案 0 :(得分:137)

使用一种更具可读性的功能:

ng-init="init()"

$scope.init = function() {
    $scope.a = 1;
    $scope.b = 2;
}

或者,如果必须,请使用分号分隔内联变量:

ng-init="a = 1; b = 2"

答案 1 :(得分:36)

有时将变量放在函数中并不理想。 例如,你的后端是快递,你使用玉渲染文件。

使用Express.js,您可以将本地变量发送到html。 Angular可以用

接受这些变量
ng-init=""

使用“;”一个人可以有多个变量

实施例

ng-init=" hello='world'; john='doe' "  

答案 2 :(得分:5)

我更喜欢用对象init变量包装:

{{1}}

答案 3 :(得分:3)

 <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>

AND

  var modulse = angular.module("app",[]);

  modulse.controller("TodoCtrl", function ($scope)  {

            $scope.todos = [ {text:'todo1'}, {text:'todo2'}]; 

            $scope.init = function (todo) {  return todo.text; };

  });