嵌套的 ng-click 参数未定义
Nested ng-click argument undefined
我正在使用通过 ng repeat 创建的动态列表。每个项目都有一个 ng-click on it 。但是很少有项目是有条件的,这使得一个表单出现并且表单提交再次点击它。
这是我的 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。
我也试过传递单个变量而不是完整的对象。
我在表单上使用了 ng-submit 而不是 ng-click。
但是没有帮助。
因为模板中有 drupDynam
,它应该在范围内。所以你不需要将它作为参数传递。我会说,如果 drupDynam.one
和 drupDynam.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
赋值。你在哪里设置它的值?
我正在使用通过 ng repeat 创建的动态列表。每个项目都有一个 ng-click on it 。但是很少有项目是有条件的,这使得一个表单出现并且表单提交再次点击它。 这是我的 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。
我也试过传递单个变量而不是完整的对象。 我在表单上使用了 ng-submit 而不是 ng-click。 但是没有帮助。
因为模板中有 drupDynam
,它应该在范围内。所以你不需要将它作为参数传递。我会说,如果 drupDynam.one
和 drupDynam.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
赋值。你在哪里设置它的值?