angularjs无法动态调用函数

时间:2016-10-17 08:46:21

标签: javascript asp.net angularjs

我正在创建一个网络应用,其中我有两个下拉列表

<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>

关于comname更改我想根据我的第一个下拉列表中选定的公司从我的数据库中调用数据

这是我的功能

//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有什么问题?

2 个答案:

答案 0 :(得分:1)

value="comname"中的<option ng-repeat="o in comnamelistfun" value="comname">更改为ng-value="comname"value="{{comname}}"

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

答案 1 :(得分:0)

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

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

<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