2013-12-09 2 views
0

Я пытаюсь создать модальный, который откроет основное чтение статей, однако я не могу получить область видимости. Прямо сейчас JSON-файл - это всего лишь отрывок, в конце концов это будет полная статья, так что дело в том, когда вы нажимаете читать дальше, он покажет полную статью.Доступ к форме области ng повторить в новом модальном

Вот плункер моего.

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

Это, очевидно, не хватает много стайлинга и т.д., я просто хотел, чтобы получить основу этого там.

Я знаю, что ng-repeat создает новую область видимости, поэтому я должен иметь доступ к этой области, чтобы получить то, что хочу, но я бил головой о стену, пытаясь выяснить, как получить эту область , Я прочитал несколько связанных вопросов, однако все они используют либо Bootstrap modal, либо похожий, и я, похоже, не вижу соответствующего кода.

Любые идеи?

EDIT:

Проходя статью через функцию 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.

EDIT 2:

Я думаю, что проблема в том, что модальный создает свою собственную область действия, которая находится вне сферы действия контроллеров. Может ли это быть проблемой, с которой я столкнулся?

EDIT:

Таким образом, проблема, как представляется, что завод, который создает свой модальный создает свою собственную сферу. Я попытался ввести $ scope в завод, но это заставило ошибку, все равно не повезло.

+0

быть уверены, что ваши объекты в объеме не напрямую привязаны к '$ scope'. '$ scope.myObject' => bad,' $ scope.anyObject.myObject' => хорошо. В противном случае у вас может быть много проблем с иерархиями областей. – Mik378

+1

Я не думаю, что вам нужен родитель $. поскольку дети унаследуют родителя. Вы уверены, что ваш код для модального режима работает правильно? Я бы испытал это самостоятельно, чтобы подтвердить, что с ним нет проблем. – Darryl

+0

Дэррил, что ты имеешь в виду? Модальная определенность срабатывает. Я считаю, что вложенность функции внутри контроллера - это то, почему мне нужен родитель $. без $ parent ничего не срабатывает. –

ответ

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(); 
} 

});

В вашей разметке модального диалога вы можете получить доступ к свойствам в выбранной статье области видимости.

Как:

<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

Это почти работает, однако мой модальный создает новую область видимости и поэтому не может получить доступ к статье. Как я могу сделать свой завод/модальный не создавать новую область или даже доступ к другой области? –

Смежные вопросы