首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将angular-dragdrop转换为使用firebase $asArray

将angular-dragdrop转换为使用firebase $asArray
EN

Stack Overflow用户
提问于 2014-08-18 15:01:27
回答 2查看 402关注 0票数 1

这是AngularJS和Firebase的新手,我正在尝试按照下面的链接转换angular-dragdrop.js,以使用angularFire 0.8.0 $asArray特性:

https://github.com/codef0rmer/angular-dragdrop/blob/master/src/angular-dragdrop.js

我只是想知道以下更改是否足够:

1)在函数声明中包含firebase

代码语言:javascript
复制
(function (window, angular, firebase, undefined) {

2)在jqyoui回调函数中包含$firebase

代码语言:javascript
复制
var jqyoui = angular.module('ngDragDrop', []).service('ngDragDropService', ['$firebase', '$timeout', '$parse', function($timeout, $parse) {

3)将dropModelValue和dropModelValue上的所有push和splice更新改为$add和$remove。

代码语言:javascript
复制
dropModelValue.$add(dragItem);

4)在dropModelValue和dropModelValue赋值后添加$save

代码语言:javascript
复制
dragModelValue[dragSettings.index] = dropItem;
dragModelValue[dragSettings.index].$save(dragSettings.index);

非常感谢您的帮助。非常感谢提前。

EN

回答 2

Stack Overflow用户

发布于 2014-08-19 05:08:07

您可以利用$extendFactory覆盖推送/拼接行为,而不是修改拖放库。理想情况下,您只需更新记录的优先级,并让服务器移动它们。

请记住,Firebase数据是JSON对象(不是数组,因此不会在JavaScript中排序),因此在数组中移动项不会影响它们在服务器上的位置。如果您想对数据强制排序,而不是按键进行字典排序,则必须使用use priorities

而且,您没有正确使用$save --调用array.$save(item),而不是item.$save(itemIndex)。从这些误解来看,可能还有很多其他问题。了解Angular GuideFirebase JS Guide是一个很好的入门教程。

票数 1
EN

Stack Overflow用户

发布于 2014-08-19 06:31:24

我使用drap & drop对Firebase数组重新排序的一种技术是将键重新绑定到值,以便它们的字典序顺序与用户设置的新顺序相匹配。由于Firebase将强制关键字的字典顺序,因此交换2个值的关键字将交换这些值。每次用户删除一个项目时,重新绑定密钥:

代码语言:javascript
复制
_(myFirebaseArray)
    .map('$id')
    .sortBy() 
    // at this stage we have the array of keys sorted lexicographically
    // we pair each key with the values, which are sorted by the user
    .zipObject(myFirebaseArray) 
    // for each pair, bind the key to the value and save
    .each(function (value, newKey) {
        value.$id = newKey
        myFirebaseArray.$save(value)
    })

这可能是次优的。我没有意识到优先次序。这项技术可能可以相当容易地适应优先级的使用。上面的代码应该与2到4的lodash兼容。

此技术在应用程序here中的示例。通过Angular UI.Sortableranking阵列bound到drap &drap。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25357840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档