2015-07-21 27 views
0

Angular存在一個問題,那就是當我爲ng-show調用一個函數來隱藏/顯示一個元素時,參數I傳遞給它的函數是未定義的。Angular - 當從ng-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 
... 

} 

}); 

,如果需要,我可以提供更多的信息。

+0

PHP是服務器端語言和角度是JS客戶端。你不能這樣做。您應該使用'ng-init' – Vineet

+0

服務器端代碼構建html,然後將angular掛接到它,因爲angular.js在AFTER後加載。我不明白 – BDillan

+1

'$ type'的數據類型是什麼? – Stiliyan

回答

2

如果目標是一個字符串傳遞給切換功能,然後你忘了周圍添加$型報價:

echo '<li ng-show="toggle(\'' .$type . '\')"></li>' 

因此,如果PHP變量$type的值是「你好」,生成的HTML代碼將

<li ng-show="toggle('hello')"></li> 

無引號,生成的HTML代碼將是

<li ng-show="toggle(hello)"></li> 

這意味着將使用$scope.hello作爲參數調用JavaScript函數,該函數可能未定義。

+0

謝謝你這麼多。有效! – BDillan

1

您需要爲傳遞給您的toggle函數的值添加引號。如果你不那麼角會嘗試解析您的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> 
相關問題