嵌套的ng-click参数undefined

时间:2017-11-14 12:36:22

标签: javascript angularjs angularjs-ng-click

我正在使用使用ng repeat创建的动态列表。每个项目都有一个ng-click。但是很少有条件被限制,这使得表单出现并且表单再次提交单击它。 这是我的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函数的所有参数。即名称,端点和api。但是为第二个ngclick参数得到一个未定义的,即drupDynam。

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

1 个答案:

答案 0 :(得分:2)

由于模板中有drupDynam,因此它应该在范围内。所以你不需要将它作为参数传递。我会说,如果drupDynam.onedrupDynam.two在模板中正常工作,则以下内容应该有效:

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

如果不是,那么drupDynam初始化就不行了。您可以尝试在模板中输出它:

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

通过双向绑定,必须在范围内更改drupDynam的值后立即更改视图,这样您才能在单击之前看到它。如果不好,您需要调查代码中的drupDynam分配。你在哪里设定它的价值?