2015-09-26 60 views
0

我有一個angularjs應用程序,我在其中調用一個函數foo(bar),它將bar作爲參數。該欄是來自web api的數據。我通過使用NG-重複這個數據環路和一切工作好的電子-G在兩個地方調用相同的函數僅適用於一個實例

<li class="list-group-item" ng-repeat = "tag in subreddit.tags"> 
     <a href="javascript:void(0);" ng-click="subreddit.getData(tag)" target="_blank">{{tag.data.url}}</a> 

     </li> 

這裏的getData功能工作良好。現在,在相同的應用程序,我定義象下面這樣的getData的另一個實例:

<button class="btn btn-success btn-block" ng-click="subreddit.getData(tag);">Load Feeds...</button> 

這一次得到的數據不會起作用,因爲參數標籤是不確定的爲那明顯,而作爲的情況下,NG-重複它是從數據未來通過。

我知道這很難重新解釋這個問題,所以我舉了一個演示來說明問題。

重現步驟:

點擊reddit的鏈接和數據被正確填充,你可以在控制檯

看到,但如果你點擊紅色按鈕加載訂閱這就要求它不」一樣的功能工作。有人可以告訴我如何讓這個工作或我做錯了什麼。

問題的演示:

http://jsbin.com/xexawumojo/edit?html,js,output

+0

不能看你怎麼指望它的工作。該函數獲取一個參數,並且在按鈕的情況下你沒有任何東西。點擊按鈕時,您想使用什麼標籤?這裏的問題是邏輯,而不是代碼 –

回答

0

您還沒有定義其他情況下,你仍然使用相同的控制器,但現在,因爲你沒有一個有效的數據對象已經寫。因爲你不在重複循環中,所以標記是未知的。

您可以添加一個鼠標點擊處理程序,將選定的標籤保存在控制器中,並使用該標籤進一步加載。

0

我真的不知道這個問題,但在這裏我想你已經誤解了這裏的概念是可以幫助你一點的程序。

<!DOCTYPE html> 
<html ng-app="MyApp"> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script> 
    <meta charset="utf-8"> 
    <title>JS Bin</title> 
</head> 
<body> 
    <div class="first" ng-controller="SubRedditController as subreddit"> 

    <ul class="list-group"> 
    <!-- you have declared tag variable over here so scope of the tag variable will be in below li only 
    {from here --> 
     <li class="list-group-item" ng-repeat = "tag in subreddit.tags"> 
     <a href="javascript:void(0);" ng-click="subreddit.getTagAssociatedData(tag)" target="_blank">{{tag.data.url}}</a> 

     </li> 
    <!-- to here} --> 

    <ul> 
     <li class="list-group-item" ng-if="subreddit.full_description"> 
     {{subreddit.full_description.description}} 
     <!-- <button class="btn btn-success btn-block" ng-click="subreddit.getTagAssociatedData(tag);">Load Feeds...</button> --> 
     <!-- you can not access tag variable over here because it is undefined. --> 
     </li> 
    </ul> 
    </div> 

</body> 
</html> 

而當你正在傳遞的價值是不確定的那個函數會被這樣的事情

vm.getTagAssociatedData = function(data) { 
// as data is undefined in second case   
var full_description = data.data; // full_description = undefiend 
vm.full_description = full_description; // vm.full_description = undefined 
      console.log(data); // no output 
     } 
相關問題