【问题标题】:Dropdownlist is not setting values using angular JS下拉列表未使用 Angular JS 设置值
【发布时间】:2019-02-04 13:41:17
【问题描述】:

我有一个要求,我想使用MVCangular JS 绑定dropdownlist

我尝试如下

var app1 = angular.module('Assign', [])
app1.controller('SAPExecutive_R4GState', function ($scope, $http, $window) {
   // alert(UMSLocationDetails);
    var LocObj = JSON.parse(UMSLocationDetails)
    var ZoneValue = "";
    $.each(LocObj, function (index, element) {
        ZoneValue += element.LocationID + ",";
    });

    ZoneValue = ZoneValue.substr(0, ZoneValue.length - 1);
    var Values = { "MaintZones": ZoneValue };

    alert(JSON.stringify(Values));

    $scope.DefaultLabel = "Loading.....";
    $http({
        method: "POST",
        url: "/App/GetR4GStates",
        dataType: 'json',
        data: JSON.stringify(Values),
        headers: { "Content-Type": "application/json" }

    }).success(function (result) {
        $scope.DefaultLabel = "--Select--";
        $scope.State = data;
    });

    post.error(function (data, status) {
        $window.alert(data.Message);
    });
});
<select id="SAPExecutive_R4GState" class="form-control" ng-model="R4GState.Selected" ng-controller="SAPExecutive_R4GState as R4GState" ng-init="Select" ng-options="b for b in list">
                                    </select>

还有我的 CS 代码

[HttpPost]
    public JsonResult GetR4GStates(string MaintZones)
    {
        List<SelectListItem> lstR4GState = new List<SelectListItem>();
        try
        {         
            Filters ObjFilter = new Filters();
            DataTable dt = ObjFilter.GetR4GState(MaintZones);
            if (dt.Rows.Count > 0)
            {
                lstR4GState = (from DataRow dr in dt.Rows
                               select new SelectListItem()
                               {
                                   Text = Convert.ToString(dr["R4GSTATENAME"]),
                                   Value = Convert.ToString(dr["R4GSTATECODE"])

                               }).ToList();
            }
            else
            {

                SelectListItem slEmptyData = new SelectListItem();
                slEmptyData.Text = "No Data found";
                slEmptyData.Value = "No Data found";
                lstR4GState.Add(slEmptyData);
            }
        }
        catch (Exception e)
        {
        }
        // ErrorLog.HandleErrorLog("", "", "GetR4GStates", "Error2");
        return Json(lstR4GState);
    }

我在 return Json(lstR4GState); 中获取值,但未在下拉列表中设置值。

由于我是 Angular 新手,请建议我哪里出错了

【问题讨论】:

  • 什么版本的AngularJS? $http.post('URL', Values).then(response =&gt; { $scope.State = response.data; }).catch(err =&gt; { // do something with err message });
  • @Dementic:我不确定,但我猜可能是 5.. 那是什么代码??
  • Angular5AngularJS 是不同的东西,代码是 AngularJS
  • 不确定 Angular 版本,但肯定是 angularjs。如果可能,请将其发布为答案,从这里很难理解
  • 你可以用列表对象编写 ng-repeat,但在控制器中你没有提到列表对象

标签: javascript angularjs model-view-controller html-select


【解决方案1】:

建议用户THENCATCHAngularJS > 1.5 这应该有效:

angular.module('Assign', [])
  .controller('SAPExecutive_R4GState', function($scope, $http, $window)  {
    const payload = {};
    $http.get('https://dog.ceo/api/breeds/list/all', payload)
      .then(function(response) {
      // Please be aware RESPONSE contains the whole response.
      // You probably want RESPONSE.DATA
        console.log(response.data);
      })
      .catch(function(err) {
        // do something with err message });
      });
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="Assign" ng-controller="SAPExecutive_R4GState"></div>

请注意,此示例使用GET 请求,以便我可以证明它有效, 在GET 请求中,payload 将添加为querystring 如果将其更改为$http.post,负载将添加到请求的正文中。

【讨论】:

  • 您可以单击Run code snippet 按钮并查看作品中的魔力。
  • 如何在你添加了 url 的地方调用我的 mvc 代码?
  • 添加您自己的 url,我必须举个例子。response.data 将拥有从 MVC 应用程序返回的数据。
猜你喜欢
  • 2017-08-13
  • 2020-01-11
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
相关资源
最近更新 更多