Angular - 当从 ng-show 调用函数并将参数传递给它时 - 参数变为未定义
Angular - when calling a function from ng-show and passing a parameter into it - the parameter becomes undefined
我在使用 Angular 时遇到问题,当我为 ng-show 调用一个函数给 hide/show 一个元素时,我传递给它的参数在函数中是未定义的。
我不知道是不是因为我正在使用 PHP 来打印 HTML 但我非常怀疑。除了使用它,我别无选择。
未定义的可能原因是什么?
<div ng-app="App">
<div ng-controller="MyCtrl">
...
<?php
...
echo '<li ng-show="toggle(' .$type . ')"></li>' //$type is not undefined
...
?>
...
</div>
</div>
JS:
app.controller('MyCtrl', function($scope) {
$scope.toggle = function(type){
console.log(type); //undefined
...
}
});
如果需要,我可以提供更多信息。
如果目标是将文字字符串传递给切换函数,那么您忘记在 $type:
周围添加引号
echo '<li ng-show="toggle(\'' .$type . '\')"></li>'
因此,如果 PHP 变量 $type
的值为 'hello',生成的 HTML 代码将是
<li ng-show="toggle('hello')"></li>
没有引号,生成的 HTML 代码将是
<li ng-show="toggle(hello)"></li>
这意味着 JavaScript 函数将以 $scope.hello
作为参数调用,这可能是未定义的。
您需要在传递给 toggle
函数的值周围添加引号。如果您不这样做,那么 Angular 将尝试将您的 PHP $type
变量的值解析为控制器范围内的变量,该变量将是 undefined
因为它不存在:
<div ng-app="App">
<div ng-controller="MyCtrl">
...
<?php
...
echo '<li ng-show="toggle(\"' .$type . '\")"></li>' //$type is not undefined
...
?>
...
</div>
</div>
我在使用 Angular 时遇到问题,当我为 ng-show 调用一个函数给 hide/show 一个元素时,我传递给它的参数在函数中是未定义的。
我不知道是不是因为我正在使用 PHP 来打印 HTML 但我非常怀疑。除了使用它,我别无选择。
未定义的可能原因是什么?
<div ng-app="App">
<div ng-controller="MyCtrl">
...
<?php
...
echo '<li ng-show="toggle(' .$type . ')"></li>' //$type is not undefined
...
?>
...
</div>
</div>
JS:
app.controller('MyCtrl', function($scope) {
$scope.toggle = function(type){
console.log(type); //undefined
...
}
});
如果需要,我可以提供更多信息。
如果目标是将文字字符串传递给切换函数,那么您忘记在 $type:
周围添加引号echo '<li ng-show="toggle(\'' .$type . '\')"></li>'
因此,如果 PHP 变量 $type
的值为 'hello',生成的 HTML 代码将是
<li ng-show="toggle('hello')"></li>
没有引号,生成的 HTML 代码将是
<li ng-show="toggle(hello)"></li>
这意味着 JavaScript 函数将以 $scope.hello
作为参数调用,这可能是未定义的。
您需要在传递给 toggle
函数的值周围添加引号。如果您不这样做,那么 Angular 将尝试将您的 PHP $type
变量的值解析为控制器范围内的变量,该变量将是 undefined
因为它不存在:
<div ng-app="App">
<div ng-controller="MyCtrl">
...
<?php
...
echo '<li ng-show="toggle(\"' .$type . '\")"></li>' //$type is not undefined
...
?>
...
</div>
</div>