包含ng-options的下拉列表无效

时间:2017-07-31 15:10:57

标签: javascript angularjs asp.net-core-mvc dropdown ng-options

嘿,我正在填充一个下拉列表,从数据库中获取值,然后将其存储在类别类型列表中 这是类别

 public class Category
{
    [Key]
    [Required]
    public int main_category_Id { get; set; }
    public string Main_Category { get; set; }
}

并将值存储在上面的类型Collection中 下面是从Db获取值并作为json对象返回的代码

  public JsonResult getcategory()
    {
        IEnumerable<Category> catgry_list;
        //calling the category interface method
        catgry_list =   repository.category_List;
        // var data = s_list;
        return new JsonResult (new { Data=catgry_list });
    }

下面是我接收该类型列表的角度控制器代码

 LocationService.getcategory().then(function (d) {
    $scope.cat_list = d.data;
},

在上面的部分中,** cat_list **是在Scope中声明的变量,代码在

之下
 $scope.cat_list = null;

getcategory()是一个代码低于

的函数
 fac.getcategory = function () {
    return $http.get('/Admin/getcategory');

}
下面的

是我的前端下拉代码

 <Select  ng-model="catgryid" ng-options="I.main_category_Id as I.Main_Category for I in cat_list" class="form-control"
                      >

            </Select>

当我运行我的应用程序时,它显示未定义我在chrome中调试它显示 cat_list 具有值,但它只显示未定义

我无法理解什么是未定义这是什么解决方案

1 个答案:

答案 0 :(得分:0)

第一件事,你在这一行中不需要as I.Main_Category ...

I.main_category_Id as I.Main_Category for I in cat_list

将此更改为此

I.main_category_Id for I in cat_list

然后是您的问题,所以我猜问题是在您的json对象中..

  

返回新的JsonResult(new {Data = catgry_list});

您正在将列表作为json对象发送...它将返回类似这样的内容

data : [{lstObj1},{lstObj2},{lstObj3},,,]

因此,当您尝试遍历此“数据”时,它会提供整个列表{lstObj1},{lstObj2},{lstObj3},,,,但您期望lstObj并将其视为列表对象。它返回给你undefined(希望你理解我所说的)

所以最简单的解决方案是Don't convert you list into another json object, pass it as it is, it will definitely work