2015-07-11 48 views
0

也许我的问题看起来很容易解决,但自从很多小时后我遇到了这个问题:当我在仪表板中时,所有数据我的Firebase数据库可见(使用Ng-repeat)。 但我找不到解决方案来选择一个特定的项目,并在另一个页面中查看他的详细信息。AngularFire - 错误:无法从状态'tabdash'解析'#/ tabpost'

我已经测试了上面的这个方法,并且我有这个错误“错误:无法从状态'tabdash'解析'#/ tabpost'。

这是HTML(这是一个例子):

<div ng-repeat="post in posts"> 

<div class="card" ui-sref="#/post/{id}"> 
<h1>{{post.title}}</h1> 
<p>{{post.content}}</p> 
</div> 

</div> 

在应用JS:

.state('tabpost', { 
    url: 'tabpost/id', 
    templateUrl: 'templates/tab-post.html', 
    controller: 'PostCtrl' 
    }) 

在服务JS(中邮厂):

myApp.factory("Post", ["$firebaseArray", "$firebaseObject", function($firebaseArray, $firebaseObject) { 
var postRef = new Firebase('https://myApp.firebaseio.com/Posts/'); 
var userRef = new Firebase('https://myApp.firebaseio.com/Users/'); 
var posts = $firebaseArray(postRef); 

    var Post = { 

     all: posts, 

     get: function (postKey){ 
      var postId = $firebaseObject(postRef); 
       return $firebaseObject(eventRef.child('Posts').child(postId).child(userid)); 

       } 
      , 
     add: function (post){ 
      var postId = $firebaseArray(postRef, userRef); 
      event.userid = userRef.getAuth(); 
       return postId.$add(post); 
       } 
     } 
     return Post; 

}]); 

我PostCtrl:

myApp.controller('PostCtrl', ['$ionicFrostedDelegate', '$ionicScrollDelegate','$state','$scope', 'Post', 'Auth', '$firebaseObject', '$firebaseArray', '$routeParams', function($ionicFrostedDelegate, $ionicScrollDelegate, $state,$scope, Post, Auth, $firebaseObject, $firebaseArray, $routeParams) { 

    var PostRef = new Firebase("https://myApp.firebaseio.com/Posts"); 

var id = $routeParams.id; //get the id from url, $routeParams is injected in controller 

    $state.go('tabpost', { 
    id: $scope.id 
    }); 

    $scope.posts = Post.get(id); //call get() method of Post with the id retrieved 

    $scope.post = {'title': '', 'content': ''}; 

    $scope.auth = Auth; 

PS:花了3天时间才尝试了大量过时的教程,我相信解决方案不会那么简单。

我昨天和之后已经发布了三个类似的问题,但每个建议的解决方案都没有奏效。我将非常感谢能帮助我走出僵局的人。

我还是有点麻烦jsFiddle答应我会学会使用它,一旦我会解决这个问题。

谢谢你给我时间

+0

你可以发布更多的'app.js'或创建codepen/plunker /一些代码的例子吗?如果您使用的是Ionic的'ui-router',那么您应该使用'$ stateParams',而不是'$ routeParams',并且您的状态定义中的url应该像这样:'url:'tabpost /:id''(注意id之前的冒号)。请参阅[本博客](http://www.gajotres.net/ionic-framework-tutorial-5-master-detail-pattern/)了解更多信息。 – brandyshea

+0

谢谢,我会测试它,我回来了。你想要我所有的路线提供者吗? – PositivProd

+0

'ui-sref =“#/ post/{id}”'不正确。你需要传递状态名称,而不是散列,例如'ui_sref="home({foo:'fooVal1',bar:'barVal1'})">'..看到这个http:// stackoverflow.com/a/25647714/1516309 – jakeed1

回答

0

你需要在你的国家的URL冒号前缀的变量名。你的UI路由器状态应该是

.state('tabpost', { 
    url: 'tabpost/:id', 
    templateUrl: 'templates/tab-post.html', 
    controller: 'PostCtrl' 
    }); 

,你应该链接到它就像

<div class="card" ui-sref="tabpost/{id}"> 
+0

我试过,但我有同样的错误:错误:无法解析'tabpost/{id}'状态'tabdash' – PositivProd

+0

看看你的控制台中的DOM,{id}​​实际上是注入还是保持为字符串“{id}”? –

+0

总是字符串ID .. – PositivProd