【问题标题】:angularjs unable to call function dynamicallyangularjs无法动态调用函数
【发布时间】:2016-10-17 08:46:20
【问题描述】:

我正在创建一个 Web 应用程序,其中有两个下拉列表

<tr style="width:80%; border:1px solid black;">
              <td style="text-align:center; width:50%;">
                  Comname
              </td>
              <td style="width:50%; border:1px solid black; padding:3px; text-align:center;">
                  <select ng-change="gbrandname()" ng-init="ucomname='comname'" ng-model="ucomname">
                      <option ng-repeat="o in comnamelistfun" value="comname">{{o.comname}}</option>
                  </select>
              </td>
          </tr>
          <tr style="width:80%; border:1px solid black;">
              <td style="text-align:center; width:50%;">
                  Brand Name
              </td>
              <td style="width:50%; border:1px solid black; padding:3px; text-align:center;">
                  <select ng-change="getzone()" ng-init="ubrandname='select'" ng-model="ubrandname">
                      <option ng-repeat="o in gbrand" value="brandname">{{o.brandname}}</option>
                  </select>
              </td>
          </tr>

在更改名称时,我想根据我的第一个下拉列表中选择的公司从我的数据库中调用数据

这是我的功能

//brandname
        $scope.gbrandname = function () {
            $http.get('/csuv5.asmx/getbrand', {
                params: {
                    log: 'admin',
                    comname: 'QED Productions Pvt Ltd',
                    pm: 'admin'
                }
            })

            .then(function (response) {
                {
                    $scope.gbrand = response.data.brandname;
                    console.log(response.data.branname);
                }
            });
    }

我在我的函数中传递这些参数并打印它,但它没有在我的第二个下拉列表中显示任何数据

但是当我在函数中传递静态参数时,它的工作原理

这是我的带有静态参数的函数,工作正常

//brandname
        //$scope.gbrandname = function () {
            $http.get('/csuv5.asmx/getbrand', {
                params: {
                    log: 'admin',
                    comname: 'QED Productions Pvt Ltd',
                    pm: 'admin'
                }
            })

            .then(function (response) {
                {
                    $scope.gbrand = response.data.brandname;
                    console.log(response.data.branname);
                }
            });
    //}

甚至 ng-click 也可以工作

ng-change 有什么问题?

【问题讨论】:

  • 您可以在PlunkerJSFiddle 中添加您的代码吗?
  • @RutvikBhatt 我可以,但我正在从数据库中获取数据

标签: javascript asp.net angularjs


【解决方案1】:

&lt;option ng-repeat="o in comnamelistfun" value="comname"&gt; 中的value="comname" 更改为ng-value="comname"value="{{comname}}"

ng-change 不会触发,因为值不会改变。您提供了静态值"comname"

【讨论】:

    【解决方案2】:

    动态变量的函数调用在哪里?您的函数具有硬编码值。

    另外,在函数调用之前,尝试一个测试函数来检查下拉列表的值是否被捕获,或者甚至在函数被调用之前。如果正在调用函数,并且值正在反映,则可以继续进行数据库调用。

    <select ng-change="`gbrandname`(ucomname)" ng-init="ucomname='comname'" ng-model="ucomname">
                      <option ng-repeat="o in comnamelistfun" value="{{comname}}">{{o.comname}}</option>
                  </select>
    

    然后是函数调用:

    var gbrandname = function(ucomname){alert(ucomname.comname)}
    

    你可以参考我刚刚为你创建的这个plnkr

    【讨论】:

      猜你喜欢
      • 2016-10-14
      • 1970-01-01
      • 2019-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多