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>