ng-initで複数の値を宣言します


85

したがって、奇妙なハッシュを作成せずに、単一の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とセミコロンがステートメントを区切るものであるため、合理的ではありませんが、考え方は同じです
Bernardo Dal Corno 2017

回答:


144

より読みやすい関数を使用します。

ng-init="init()"

そして:

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

または、必要に応じて、インライン変数をセミコロンで区切ります。

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

7
独自のスコープがあるため、これはng-repeatでは機能しません。jsfiddle.net/ U3pVM / 13212–
Toolkit

@Toolkitは、ドット表記(controllerAs構文)を使用して、ng-repeatの分離スコープ外の関数を参照します。ng-repeatの事前定義された$ index変数を、ビューから呼び出された関数に渡します。
トリックパティ2016

評価はどちら側から始まりますか?たとえば、別のステートメントで変数を使用する場合、ステートメントをどのように記述すればよいですか?例:ng-init = "a = 12; b = 1 + a"またはinit = "b = 1 + a; a = 12;"?左からjavascriptとして評価されますか?
プーヤ2016

@Пуя-私はそう思います。あなたはそれをテストすることができます:ng-init="c = a + b; a = 1; b = 2"そして結果が何であるかを見ることができますc-最も良い推測、それは左から右に行きます。
tymeJV 2016

39

変数を関数に入れるのが理想的でない場合があります。たとえば、バックエンドがExpressであり、jadeを使用してファイルをレンダリングしているとします。

Express.jsを使用すると、ローカル変数をhtmlに送信できます。Angularはこれらの変数を次のように受け入れることができます

ng-init=""

「;」を使用する 1つは複数の変数を持つことができます

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

8

私はオブジェクトの初期化変数でラップすることを好みます:

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

これは天才です!
Cengkuru Michael 2017

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>

そして

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

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

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

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

  });
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.