2016-12-13 5 views
-2

オブジェクトのオブジェクトに角を使用し、categoryOneのコンテンツが自動的にページに読み込まれます。ボタンがクリックされた場合、コントローラの機能を呼び出して、loadContentオブジェクトのオブジェクトの下にある機能を呼び出して、categoryOneのコンテンツをページから削除し、categoryTwoの内容をその場所に挿入します。動的変数をオブジェクトパスに連結する方法

私のloadContentの機能では、categoryTwoのオブジェクトcontentの各オブジェクトを対象にしたいと思います。つまり、$scope.layout.categories.categoryTwo.content.contentX.text "X"は1または2になる可能性があります。

実際には、動的変数をオブジェクト内のものを対象とする「パス」に連結することについては何も見つかりません。上のパラグラフでは、 "X"は動的変数です。私が参照しているこの "パス"は、オブジェクトのオブジェクトから取得しようとしているものです。

tl; drオブジェクトのオブジェクトから取得しようとしているパスに動的変数を連結するにはどうすればよいですか?

ありがとうございました。あなたのためのバーチャルハイファイブ。

var app = angular.module("app1", []).controller("appCtrl", ["$scope", "$http", function($scope, $http) 
{ 
    $scope.layout = 
    { 
     "name": "test_proj", 
     "title": "Test Project", 
     "categories": 
     { 
      "categoryOne": 
      { 
       "heading": "Category 1", 
       "links": 
       { 
        "link1": "www.domain.com" 
       }, 
       "content": 
       { 
        "content1": 
        { 
         "text": "This is some text.", 
         "help": "Help text 1." 
        }, 
        "content2": 
        { 
         "text": "Apples.", 
         "help": "Help text 2." 
        } 
       } 
      }, 
      "categoryTwo": 
      { 
       "heading": "Category 2", 
       "links": 
       { 
        "link1": "www.generic.com" 
       }, 
       "content": 
       { 
        "content1": 
        { 
         "text": "More text here.", 
         "help": "Help text 1." 
        }, 
        "content2": 
        { 
         "text": "Oranges.", 
         "help": "Help text 2." 
        } 
       } 
      } 
     } 
    } 


    $scope.loadContent = function() 
    { 
     var catLength = 0; 

     for (var key in $scope.layout.categories.categoryTwo.content) 
     { 
      if ($scope.layout.categories.categoryTwo.content.hasOwnProperty(key)) 
      { 
       ++catLength; 
      } 
     } 

     $(".cool-container").html(""); 

     for (var x = 0; x < catLength; x++) 
     { 
      $(".cool-container").append("<p class='content'>" + $scope.layout.categories.categoryTwo.content.contentX.text + "</p>"); 
      // Where it says "contentX" in the line above, I want "X" to be a dynamic variable that will make it "content1" and "content2" 
     } 
    } 
}]); 
+0

[変数を使用して動的にアクセスオブジェクトのプロパティ]の可能な重複(http://stackoverflow.com/questions/4244896/dynamically-access-オブジェクトプロパティを使用する変数) –

答えて

0

あなたが動的オブジェクトのアクセサが必要な場合は、代わりに、ドットシンタックスの$scope.layout.categories.categoryTwo.content["content" + X].text

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors

+0

これはそれをしました!私は... content.content [x] .textを試みましたが、それは未定義のエラーを生成しました。これは、しかし、トリックをした!ありがとう! – HuskyBlue

関連する問題