我正在使用使用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。 但是没有帮助。
drupDynam 在模板中,它应该在范围上。所以你不需要把它当作论点来传递。我要说的是,如果 drupDynam.one 和 drupDynam.two 正确使用模板:
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}}
通过双向绑定,必须在 德鲁普德纳姆 在范围上更改,因此您可以在单击之前看到它。如果不好,你需要调查 德鲁普德纳姆 代码中的赋值。你在哪里设定它的价值?
德鲁普德纳姆