我正在制作一个包含搜索结果列表的项目。像这样构建
<div class="col-lg-6">
<ul ng-repeat=" wiks in wiki">
<li ng-mouseenter="abstract = wiks.abstract" ng-mouseleave="abstract = ''">
<a href="#/view2">{{wiks.title}}</a>
</li>
<p>{{abstract}}</p>
</ul>
</div>
wiks对象不仅仅包含标题和摘要。为了减少对服务器的调用量,我真的想将这个对象保存在我的控制器中的一个变量中,用于下一个视图。
.controller('View1Ctrl',['$scope','WikiFactory' , function($scope, WikiFactory) {
$scope.title = "Wiki Search Site";
$scope.search = "";
$scope.wiki= "";
$scope.getWiki= function getWiki() {
WikiFactory.getWiki($scope.search)
.success(function (wiki) {
$scope.wiki = wiki;
})}
}])
.controller('wikiController', ['$scope','WikiFactory', function($scope , $WikiFactory){
}])
所以我试图在我的View1Ctrl中创建一个$ scope.specifiedWik,但似乎无法找到如何让它成为我点击的wiks。当这个问题得到解决时,我想知道是否可以通过“大书og编程法”来调用新的控制器中的$ scope.wiki = $ scope。$ parent.specifikWiki?
谢谢,如果有人可以提供帮助
答案 0 :(得分:0)
您需要$index
ng-repeat
项
<ul ng-repeat="wiks in wiki">
<li ng-click="showOneWiki($index)"
ng-mouseenter="abstract = wiks.abstract"
ng-mouseleave="abstract = ''">
<a href="#/view2">{{wiks.title}}</a>
</li>
<p>{{abstract}}</p>
</ul>
现在你可以使用这个showOneWiki($index)
函数来获取点击的wiki
.controller('View1Ctrl',['$scope','WikiFactory' , function($scope, WikiFactory) {
$scope.title = "Wiki Search Site";
$scope.search = "";
$scope.wiki= "";
$scope.specifiedWik = {}; //to hold current wiki
//This will hold the current wiki
$scope.showOneWiki = function(index) {
$scope.specifiedWik = $scope.wiki[index];
}
$scope.getWiki= function getWiki() {
WikiFactory.getWiki($scope.search)
.success(function (wiki) {
$scope.wiki = wiki;
})}
}])
$ index将返回数组中当前单击的项目索引
答案 1 :(得分:0)
我会将对象存储在您的工厂中,以便其他控制器可以使用。
<li ng-click="selectWiki(wiks)">
在控制器中:
$scope.selectWiki = function(wiki){
WikiFactory.selected = wiki;
}
现在,当其他控制器加载时,您可以执行以下操作:
$scope.selected = WikiFactory.selected;