摘要:注意并不是一个的值组合,比如有方法,所以不能这样获取属性。需要创建一个自己的应用,并在初始化的时候替换掉里的。关于通知发生变化除了通过,还可以借助或者。
为什么选择这两个库做 Todo
AVOS Cloud JavaScript SDK 负责把数据存储在服务器,提供了 数据查询,保存,更新等常用操作的方法。AngularJS 对于增删改查类型的应用场景非常合适。这块主要用到了 AngularJS的 模板和绑定方面的特性。
Step By Step 入门这里主要说下 AVOS cloud Javascript SDK 与 AngularJS 结合使用的部分
初始化 AVOS Cloud JavaScript SDKAV.initialize("your app id", "your app key");
既然是与 AngularJS,这里可以有更优雅的写法,对于angular 来说初始化可以放在 模块初始化的配置里面。
var module = angular.module("todoMod",[]); module.run(function() { AV.initialize("your app id", "your app key"); });保存一个对象
var Todo = AV.Object.extend("Todo"); var todo = new Todo(); todo.set("text",$scope.newTodo.text); todo.set("done",$scope.newTodo.done) todo.save(null, { success: function(result){ $scope.$apply(function(){//使 angular 知道数据发生了变化 $scope.todos.push(todo.toJSON()); }); } });
我们知道一个 AngularJs 的model是一个 plain JavaScript Object,对于 AV Object, 需要用 set来设置属性。注意 AV Object并不是一个 key,value的值组合,比如有 todo.save()方法,所以不能 todo[prop]这样获取属性。需要走setter,getter方式。还有其他更优雅的结合方式 下面再说。
这里还有一点需要注意,就是 $scope.$apply 这一行,因为数据的保存请求是通过AV Object 进行的,所以angular 并不知道发送了什么,需要告知angular todo数据发生了变化。
todo.toJSON(),todo 是一个 AVObject 类型实例,需要转换成 angular 需要的数据格式。
查询 Todo 列表var Todo = AV.Object.extend("Todo"); var query = new AV.Query(Todo); query.find({ success:function (results){ $scope.$apply(function(){ $scope.todos = JSON.parse(JSON.stringify(results));; }) } })
这里需要注意 JSON.parse(JSON.stringify(results)), results 是一个普通的 js Array,但里面的元素都是 AVObject 类型的实例,需要转化成 angular需要的数据格式。
一个简单的模型就建立起来了查看源码 ,下载下来直接打开 index.html 就可以看到效果了。
通过 AVOS Cloud 数据管理平台查看,管理数据。需要创建一个自己的 应用,并在初始化的时候 替换掉 AV.initialize 里的 AppId AppKey。
关于 AV Object 数据与 Angular的转化。除了通过JSON方式,还可以用
Object.defineProperty(Todo.prototype, "title", { get: function() { return this.get("text"); }, set: function(aValue) { this.set("text", aValue); } });
这样可以在 html 里直接通过 {{todo.text}} 访问。
关于通知 Angular 发生变化除了通过 $scope.$apply,还可以借助 $timeout 或者 $promise。
var defer = $q.defer(); var query = new AV.Query(Todo); query.find({ success : function(results) { defer.resolve(results); }, error : function(aError) { defer.reject(aError); } }); return defer.promise;
结合 AVOS Cloud JS SDK 和 AngularJS 可以实现 MEAN 的全栈开发。其中 M(Mongo) E(Express) N(node) 由 AVOS Cloud 完成。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/87565.html
阅读 3332·2021-11-22 14:44
阅读 2536·2019-08-30 14:10
阅读 2588·2019-08-30 13:12
阅读 1216·2019-08-29 18:36
阅读 1340·2019-08-29 16:16
阅读 3327·2019-08-26 10:33
阅读 1760·2019-08-23 18:16
阅读 378·2019-08-23 18:12