【问题标题】:Declare multiple values in ng-init在 ng-init 中声明多个值
【发布时间】:2014-07-18 03:53:48
【问题描述】:

所以我想知道如何在单个 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>

好像没用。

期待感谢

【问题讨论】:

  • "a = 1, b = 2" 是不合理的,因为它的javascript,分号是分隔语句的,但想法是一样的

标签: javascript angularjs


【解决方案1】:

使用函数,更具可读性:

ng-init="init()"

还有:

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

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

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

【讨论】:

  • 这不适用于 ng-repeat,因为它有自己的范围,请参阅 jsfiddle.net/U3pVM/13212
  • @Toolkit 使用点表示法(controllerAs 语法)来引用 ng-repeat 的隔离范围之外的函数。将 ng-repeat 的预定义 $index 变量传递给从视图调用的函数。
  • 评估从哪一侧开始?例如,如果我想在另一个语句中使用一个变量,我应该如何编写我的语句?例如:ng-init="a=12;b=1+a" 或 init="b=1+a;a=12;"?它从左侧评估为 javascript 吗?
  • @Пуя - 我会这么认为。你可以测试它:ng-init="c = a + b; a = 1; b = 2" 看看c 的结果是什么 - 最好的猜测,它从左到右。
【解决方案2】:

有时将变量放在函数中并不理想。 例如,您的后端是 express 并且您正在使用jade 渲染一个文件。

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

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

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

例子

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

【讨论】:

    【解决方案3】:

    我更喜欢用对象初始化变量包装:

    <div ng-init="initObject = {initParam: 'initParamValue', anotherOne: 'value'}"></div>
    

    【讨论】:

    • 这真是天才!
    【解决方案4】:
     <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>
    

      var modulse = angular.module("app",[]);
    
      modulse.controller("TodoCtrl", function ($scope)  {
    
                $scope.todos = [ {text:'todo1'}, {text:'todo2'}]; 
    
                $scope.init = function (todo) {  return todo.text; };
    
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 2017-05-10
      • 1970-01-01
      • 2017-11-01
      • 2016-08-05
      • 2011-10-01
      • 1970-01-01
      相关资源
      最近更新 更多