2015-09-26 47 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 
     } 
相关问题