Arrays 使用$firebaseArray代替Firebase Rest API
您好,由于Firebase缺乏对阵列存储的支持,我在从Firebase数据源筛选搜索结果时遇到问题,因此我使用firebaseArray作为替代方案。但是,由于需要通过多个控制器访问,我必须将其转换为工厂服务:Arrays 使用$firebaseArray代替Firebase Rest API,arrays,angularjs,filter,firebase,Arrays,Angularjs,Filter,Firebase,您好,由于Firebase缺乏对阵列存储的支持,我在从Firebase数据源筛选搜索结果时遇到问题,因此我使用firebaseArray作为替代方案。但是,由于需要通过多个控制器访问,我必须将其转换为工厂服务: servicesModule.factory("dataArray", ["$firebaseArray", function($firebaseArray) { var ref = new Firebase("https://datasource.firebaseio.co
servicesModule.factory("dataArray", ["$firebaseArray",
function($firebaseArray) {
var ref = new Firebase("https://datasource.firebaseio.com/Articles");
return $firebaseArray(ref);
}
]);
然后,我想创建一个搜索函数来过滤输入表单查询的结果:
//Get Posts
servicesModule.factory('globalFilter', function() {
return {
searchText: ''
};
});
搜索输入:
<form>
<div class="input-field">
<input id="search" type="search" required ng-model="globalFilter.searchText">
<label for="search"><i class="material-icons medium">search</i></label>
</div>
</form>
控制器的ng repeat指令中的过滤器:
我没有得到任何错误或结果。控制台为空,项目不呈现。在我使用firebaseArray之前,这是有效的。我的工厂出了什么问题?如果您使用的是Controllera,则需要将控制器变量绑定到此工厂
您还需要在视图中将控制器称为blg。最后,我的文章应该是我的文章
你能在使用ng repeat的地方发布HTML吗?由于某种原因,帖子没有呈现它。我刚刚调整了上面的间距,您可以看到它。控制器也通过.state so:`state'Blog',{url:'/Blog',controller:'BlogCtrl as blg',templateUrl:'Blog.html',title:'Blog'}`呈现,所有评论都很好,谢谢,但仍然失败。这很奇怪,因为在我看来,{{blg.title}}是一个标题,从控制器设置this.title=my Blog title值,而不是数据源,可以很好地进行渲染。同样,如果我把它放回dataSource.queryfunctionposts{$scope.myPosts=posts;},即使用API,即使使用$scope,它也可以正常工作。这就是为什么我认为firebaseArray服务有问题。那么安全规则呢?不应该有问题,因为我有其他控制器使用firebaseArray而不是作为服务考虑示例:ControllerModule.controller'WelcomeCtrl',[$scope、$location、$CommonProp'、$firebaseAuth、$firebaseObject'、$firebaseArray',函数$scope、$location、CommonProp、$firebaseAuth、$firebaseArray、$firebaseArray{var ref=new Firebase';var myPosts=$firebasearayref;$scope.myPosts=myPosts;我不知道为什么它不起作用。在没有看到更多代码的情况下无法诊断它。在这个过程中效果很好:我需要在半夜之前更仔细地查看您的代码。但我首先注意到的是,您将视图控制器内的rch输入。是否必须输入才能工作?
controllersModule.controller('BlogCtrl', ["$scope", "globalFilter", function($scope, globalFilter, dataArray) {
$scope.myArticles = dataArray;
}]);
<div class="col s12 m6" id="articleItems" ng-repeat="article in myarticles">
<div class="card small">
<div class="card-image waves-effect waves-block waves-light">
<img class="activator" src="images/sample-1.jpg">
</div>
<div class="card-content">
<span class="card-title activator grey-text text-darken-4">{{article.Title}}<i class="material-icons right">more_vert</i></span>
<p><a href="#">Read More</a></p>
<p>By: {{article.Author}} Published on: {{article.Published | date:'mediumDate'}}</p>
</div>
<div class="card-reveal">
<span class="card-title grey-text text-darken-4">{{article.Title}}<i class="material-icons right">close</i></span>
<div>{{article.Intro}}</div>
<p ng-bind-html="article.Body">{{article.Body}}</p>
</div>
</div>
</div>
.state('Blog', {
url: '/blog',
controller: 'BlogCtrl as blg',
templateUrl: 'blog.html',
title: 'Blog'
})`
controllersModule.controller('BlogCtrl', ["globalFilter", function(globalFilter, dataArray) {
this.myArticles = dataArray;
}]);
<div class="col s12 m6" id="articleItems" ng-repeat="article in blg.myArticles">