如何创建一个唯一的 URL 到 Firebase 路径以使用 AngularFire 进行共享?

How can I create a unique URL to Firebase path for sharing using AngularFire?

所以我已经安静地研究了一段时间,但我似乎无法在任何地方找到正确的答案。我有一个想法,我希望用户创建一个项目列表,然后保存它,return 一个 link 并分享这个 link。我已经知道如何在 firebase 中 return key(),所以这应该不是问题。

我的 firebase 数据看起来像这样

----Unique id

       ---item:"item1"
       ---item:"item2" 

----Unique id

       ---item:"item1"
       ---item:"item2" 

我怎样才能得到它,以便当人们点击保存按钮时,他们会返回一个像这样的 URL 来分享:http://www.example.org/-uniqueID。当其他人转到 link 时,他们会从 link.

获得正确的共享数据

很抱歉,我没有任何代码给你。我了解 firebase (AngularFire) 基础知识,但这对我来说是新手,我很难理解如何做到这一点。

有人能指出我正确的方向吗? 这意味着 lot.TIA

编辑

这个有效:

angular.module("app", ["firebase", "ui.router"])

.controller('liveCtrl', function($scope, $stateParams, $firebaseObject) {
    console.log($stateParams);

   var fb = new Firebase('https://xxxx.firebaseio.com/' + $stateParams.uniqueID + '');
    console.log(fb);

   $scope.list = $firebaseObject(fb);
   $scope.list.$loaded().then(console.log($scope.list));


})

.config(function($stateProvider, $urlRouterProvider) {

  $urlRouterProvider.otherwise("home");

  $stateProvider

  .state('live', {
        url: '/live/:uniqueID',
        templateUrl: 'live.html',
        controller: 'liveCtrl'
    })
});

我不确定你的架构是什么样的,但你可以做的是让用户创建一个列表,然后让用户在输入字段中设置一个唯一的 ID 或 (slug) - 将特定数据保存在Firebase.

然后在您的 APP.JS - 根据该唯一 ID

定义路由

例如

.state('live', {
        url: '/live/:uniqueID',
        templateUrl: 'views/live.html',
        controller: 'liveCtrl'
    })

仅供参考:最好的方法是在上面设置 'resolve',以便在控制器激活之前加载数据。

然后在您的控制器中,如果您使用的是 ui-路由器,请获取 $stateParam,并将其设置在您的 firebase URL.

.controller('liveCtrl', function($scope, $stateParams) {

    var fb = new Firebase('https://firebaseio.com/data/' + $stateParams.param + '');

    // Return the data | Set it in a $scope

})

然后您可以给用户一个 URL 来分享 : http://example.com/live/myuniqueid

如果您仍然感到困惑,请告诉我!

当您调用 $add 时,firebase returns 承诺带有键名,这将允许您在 url 中使用该唯一 ID。 uniqueid 将与 key()

相同

来自 angularfire 文档

var list = $firebaseArray(ref);
list.$add({ foo: "bar" }).then(function(ref) {
var id = ref.key();
console.log("added record with id " + id);
list.$indexFor(id); // returns location in the array
});