代码之家  ›  专栏  ›  技术社区  ›  ronit

嵌套ng click参数未定义

  •  0
  • ronit  · 技术社区  · 7 年前

    我正在使用使用ng repeat创建的动态列表。每个项目都有一个ng点击。但是很少有项目是有条件的,这使得表单出现,并且再次提交表单时会点击它。 这是我的HTML。

    <div>
      <div class="dropdown">
        <span class="dropdown-toggle"  data-toggle="dropdown">Services
        <span class="caret"></span></span>
        <ul class="dropdown-menu list-group">
          <li>
              <div class="input-group"> 
             <input type="text" placeholder="Search" ng-model='dfilter.Name' class="form-control">
          </div>   
          </li>
          <li class="divider"></li>
          <li class= "service_list_li" ng-repeat="d in services | filter:dfilter"  ng-click="hitDrupal(d.Name,d.endpoint,d.api)">{{ d.Name }}</li>
        </ul>
     </div>
     <div>
       <form name="dynamic_fields">
         <input type="text" ng-model="drupDynam.one"  ng-if="drupal_dynamic1">
         <input type="text" ng-model="drupDynam.two"  ng-if="drupal_dynamic2" >
         <input type="submit" ng-disabled="dynamic_fields.$pending" ng-click="goDynamic(drupDynam)"  value="Go!" ng-show="drupal_dynamic1">
       </form>
     </div>
    </div>
    

    这是JS:

     $scope.hitDrupal = function(Name,endpoint,api)
    {
      $scope.drupal_dynamic1 = false;
      $scope.drupal_dynamic2 = false;
      if (endpoint=='login') {
         //Do something
      }
      else if (Name == 'New') {
           $scope.drupal_dynamic1 = true;
           $scope.goDynamic = function(drupDynam)
           {
              dynamic_api = api + '/' + drupDynam.one;
              console.log(dynamic_api);
              //Do Something
           }
      }
    else
    {
     //Do Something 
    }
    }
    

    问题是我得到了hitDrupal函数的所有参数。i、 e名称、端点和api。但是第二个ngclick参数没有定义,即drupDynam。

    我也尝试过传递单个变量,而不是comlete对象。 我在表单上使用了ng submit而不是ng click。 但是没有帮助。

    1 回复  |  直到 7 年前
        1
  •  2
  •   dhilt    7 年前

    drupDynam 在模板中,它应该在范围上。所以你不需要把它当作论点来传递。我要说的是,如果 drupDynam.one drupDynam.two 正确使用模板:

    $scope.goDynamic = function() {
       dynamic_api = api + '/' + $scope.drupDynam.one;
       console.log(dynamic_api);
    }
    

    如果没有,那么就有问题了 初始化。您可以尝试将其直接输出到模板中:

    <input type="submit" ng-disabled="dynamic_fields.$pending" ng-click="goDynamic(drupDynam)"  value="Go!" ng-show="drupal_dynamic1">
    drupDynam: {{drupDynam}} drupDynam.one: {{drupDynam.one}}
    

    通过双向绑定,必须在 德鲁普德纳姆 在范围上更改,因此您可以在单击之前看到它。如果不好,你需要调查 德鲁普德纳姆 代码中的赋值。你在哪里设定它的价值?