Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS选择不动态填充_Javascript_Angularjs_Json - Fatal编程技术网

Javascript AngularJS选择不动态填充

Javascript AngularJS选择不动态填充,javascript,angularjs,json,Javascript,Angularjs,Json,我有以下JSON测试JSON,它是如何来自服务器的: $scope.allCategoriesAndSubcategories = { "category" : { "categoryname" : "pasteleria", "subcategory" : [ {"subcategoryname" : "pastel tradicional", "subcategoryid" : "

我有以下JSON测试JSON,它是如何来自服务器的:

$scope.allCategoriesAndSubcategories = {
          "category" : {
              "categoryname" : "pasteleria",
              "subcategory" : [
                  {"subcategoryname" : "pastel tradicional", "subcategoryid" : "1"},
                  {"subcategoryname" : "pastel con fondant", "subcategoryid" : "2"}
              ]
          },
          "category" : {
              "categoryname" : "eventos",
              "subcategory" : [
                  {"subcategoryname" : "boda", "subcategoryid" : "1"},
                  {"subcategoryname" : "cumpleanos", "subcategoryid" : "2"}
              ]
          }
      };
然后,在HTML中的select上,我执行以下操作:

<div input-field>
     <select material-select
     ng-model="picture.category1" required>
        <optgroup ng-repeat="category in allCategoriesAndSubcategories"  label="{{category.categoryname}}">
            <option value="{{category.subcategory.subcategoryid}}">{{category.subcategory.subcategoryname}}</option>
        </optgroup>
     </select>
     <label>Categoría #2</label>
</div>

当I console.log时,我得到了实际的对象,因此它不是未定义的,但是select没有填充。我应该做些别的事情来填充它吗?我是angularJS的新手,我找不到类似的例子

如果你想创建选项列表,HTML是无效的

<div input-field>
     <select material-select ng-model="picture.category1" required>
        <optgroup ng-repeat="category in allCategoriesAndSubcategories"  label="{{category.categoryname}}">
            <option ng-repeat="subcategory in category.subcategory" value="{{subcategory.subcategoryid}}">{{subcategory.subcategoryname}}</option>
        </optgroup>
     </select>
     <label>Categoría #2</label>
</div>

我想问题就在这里

 <option value="{{category.subcategory.subcategoryid}}">

子类别是array,我认为您应该使用new ng repeat创建标记列表

您的意思是它没有选择默认值?我的意思是它没有填充它。尽管select具有JSON对象的值,但它仍然是未定义的。然而,出于某种原因,第一个类别被忽略了。正如您所见,它只打印第二个JSON集,而不是第一个。@codeninja,因为您在ng-repeat上有一个重复的键。这是因为AllCategories和SubCategories是一个具有重复键的对象,但我现在理解它应该更像这样,既然JSON中没有称为category的对象,为什么ng repeat在allcategories和subcategories中的category中仍然有category名称?这总是让我感到困惑,因为案例类别从对象数组中获取整个对象的值。它可以是您希望在ng repeat中内部使用的任何内容。换句话说:ng repeat=elements中的元素是数组或对象中的单个元素,称为elements hope,这是有意义的
 <option value="{{category.subcategory.subcategoryid}}">