Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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 在嵌套的“选择”下拉列表中无法使ngOptions正常工作_Javascript_Jquery_Html_Angularjs_Json - Fatal编程技术网

Javascript 在嵌套的“选择”下拉列表中无法使ngOptions正常工作

Javascript 在嵌套的“选择”下拉列表中无法使ngOptions正常工作,javascript,jquery,html,angularjs,json,Javascript,Jquery,Html,Angularjs,Json,我已经创建了一个angular应用程序,它记录正在创建的产品的属性。在页面中,我有两个选择下拉列表,第一个用于选择属性的键,第二个用于选择特定值。每个属性的json数据如下所示:- { meta_key :"Weight", meta_values :[ "10","20","30","40","50" ], type : "text", unit:"kgs" } 每个产品都可以有一个属性数组,唯一的区别是产品中的每个属性都有一个值作为meta_值,而不是将meta_

我已经创建了一个angular应用程序,它记录正在创建的产品的属性。在页面中,我有两个选择下拉列表,第一个用于选择属性的键,第二个用于选择特定值。每个属性的json数据如下所示:-

{
  meta_key :"Weight",
  meta_values :[
  "10","20","30","40","50"
  ],
  type : "text",
  unit:"kgs" 
}
每个产品都可以有一个属性数组,唯一的区别是产品中的每个属性都有一个值作为meta_值,而不是将meta_值作为数组。JSON表示如下所示:-

{
  attributes : [
    {
      meta_key : "Weight",
      meta_value : "20",
      unit : "kgs"
    },
    {
      meta_key : "Volume",
      meta_value : "200",
      unit : "cm*cm*cm"
    }
  ]
}
这就是页面的外观

我担心的是,无论我在尝试什么,完全依赖于第一个select下拉列表的值的第二个select的值都不会被填充

空的第二个下拉列表

我尝试用静态数据填充第二个下拉列表,效果很好。但当数据取决于第一个下拉列表的选择时,数据不会改变。这是我的控制器

    $scope.attributes = [];

    $scope.product = {
        attributes: []
    };
    $scope.current_user = {};

    var attribute = {
        meta_key: '',
        meta_values: '',
        unit: ''
    };

    AuthService.getCurrentUser(function (user) {
        $scope.current_user = user;
        $scope.product.created_by = $scope.current_user.id;
    });

    Attributes.fetchAllAttributes(function (response) {
        $scope.attributes = response.message;
        $scope.attributes.unshift({meta_key: "Select an attribute"});
        console.log("Attributes", $scope.attributes);
    });

    $scope.addAttributes = function () {
        $scope.product.attributes.push(attribute);
        console.log($scope.product);
        initDropDown($scope.product.attributes.length - 1);
    };

    $scope.initValues = function (index) {
        var selectedValue = $scope.product.attributes[index];
        console.log(selectedValue,$scope.product.attributes[index].meta_values);
    };
和html部分

  <div class="row attribute" ng-repeat="attribute in product.attributes track by $index">

      <div class="input-field col s12 m4">
          <select required md-select
                  ng-model="product.attributes[$index]"
                  ng-change="initValues($index);"
                  ng-options="attribute as attribute.meta_key for attribute in attributes">
          </select>
          <label>Attribute Name</label>
      </div>

      <div class="input-field col s12 m4" ng-show="product.attributes[$index].type == 'select'">
          <select md-select
                  ng-options="value as value for value in product.attributes[$index].meta_values"
                  ng-model="product.attributes[$index].meta_value">
          </select>
          <label>Attribute Values</label>
      </div>

      <div class="input-field col s12 m4" ng-show="product.attributes[$index].type == 'text'">
          <input type="text" id="{{$index }}" ng-model="product.attributes[$index].meta_value">
          <label for="{{$index}}">Attribute Values</label>
      </div>

      <div class="input-field col s12 m2" ng-show="product.attributes[$index].meta_key != 'Select an attribute'">
           <input id="unit" disabled ng-model="product.attributes[$index].unit">
           <label for="unit" class="active">Unit</label>
      </div>

      <div class="input-field col s12 m2">
           <a ng-click="remove($index);">
                <i class="material-icons waves-effect waves-red red-text">close</i>
           </a>
      </div>
   </div>

属性名
属性值
属性值
单位
关闭
我已经想了一段时间了。我已经尝试了很多解决方案。但没有什么是有效的。我如何解决它?任何帮助都将不胜感激。

签出此签出此