2013-12-09 33 views
0

我正在尝试创建一个将打开文章主要阅读的模式,但是我似乎无法获得范围。现在JSON文件只是最终的摘录,它将是一篇完整的文章,所以重点在于当您点击阅读更多时,它将显示完整的文章。在新模式下访问范围表格ng重复

这是我的一把匕首。

http://plnkr.co/edit/OTf2179YNnNq2O1Ue18Z?p=preview

这显然遗漏了很多造型等,我只是想获得它的基础上,在那里。

我知道ng-repeat创建了一个新的范围,所以我应该能够访问这个范围来获得我想要的,但我一直在抨击我的头靠在墙上试图弄清楚如何获得该范围。我已经阅读了一些相关的问题,但他们都使用Bootstrap模式或类似的方式,我似乎没有看到相关的代码。

任何想法?

编辑:

通过openArticle功能的文章链接正确的文章,但它仍然无法在模式显示。

app.controller('ArticleListCtrl', function($scope, $http, researchArticleModal) { 
    $http.get('research/articles.json').success(function(data) { 
     $scope.articles = data; 

     $scope.openArticle = function(article) { 
      console.log(article); 
      $scope.fromFactory = researchArticleModal(); 
     } 
    }); 
}); 

控制台记录正确的标题。我更新了plnkr。

编辑2:

我认为这个问题是模式的创建它自己的范围是控制器范围之外。这可能是我遇到的问题吗?

编辑:

所以,这个问题似乎是,创建我的语气工厂创建自己的范围。我试图向工厂注入$ scope,但是抛出一个错误,仍然没有运气。

+0

功能可以肯定的是,在你的范围对象不能直接连接到'$ scope'。 '$ scope.myObject' =>坏,'$ scope.anyObject.myObject' =>好。否则,您可能会遇到很多范围层次结构问题。 – Mik378

+1

我不认为你需要$父母。因为孩子会从父母继承。你确定你的模态代码工作正常吗?我会独立测试以确认它没有问题。 – Darryl

+0

Darryl,你是什么意思?模态肯定会引发火灾。我相信嵌套控制器内的功能是为什么我需要$父。没有$父母什么都不会发生。 –

回答

1

我会建议您将文章传递到父范围上定义的openArticle方法。

页脚的ngClick会再像:

<footer><a href="" ng-click="$parent.openArticle(article)">Read More</a></footer> 

然后,您可以设置你的范围等于当前所选物品的属性,并用它在你的模态对话框中显示。

app.controller('ArticleListCtrl', function($scope, $http, researchArticleModal) { 
$http.get('research/articles.json').success(function(data) { 
    $scope.articles = data; 


}); 
$scope.openArticle = function(article) { 
    console.log(article); 
    $scope.selectedArticle = article; 
    $scope.fromFactory = researchArticleModal(); 
} 

});

在您的模式对话框的标记中,您可以访问示波器的selectedArticle上的属性。

像:

<div>{{selectedArticle.fullArticle}}</div> 

这是否有道理?

+0

我控制台记录了范围,并能够得到范围。 –

+0

对不起,有两条评论。太快压下了输入。 artile.title = $ scope.articles [1] .title; 获得第二篇文章标题。我会尝试你的方式,因为它可能更有意义,原本我将它作为索引。 –

+0

一旦您有权访问openArticle方法中的文章,是不是可以使用它来访问您的fullArticle属性以显示在模式窗口中? – MDiesel

0

你就不能传递的文章在你的openArticle()之类

<a href="" ng-click="$parent.openArticle(article)">Read More</a> 
+0

这几乎可以工作,但是我的模式创建了一个新的范围,因此无法访问文章。我怎么能让我的工厂/模式不创建新的范围,甚至访问其他范围? –