三种AngularJS中获取数据源的方式
程序员文章站
2023-09-06 09:44:09
在angularjs中,可以从$rootscope中获取数据源,也可以把获取数据的逻辑封装在service中,然后注入到app.run函数中,或者注入到controller...
在angularjs中,可以从$rootscope中获取数据源,也可以把获取数据的逻辑封装在service中,然后注入到app.run函数中,或者注入到controller中。本篇就来整理获取数据的几种方式。
■ 数据源放在$rootscope中
var app = angular.module("app",[]); app.run(function($rootscope){ $rootscope.todos = [ {item:"",done:true}, {item:"",done:false} ]; }) <div ng-repeat="todo in todos"> {{todo.item}} </div> <form> <input type="text" ng-model="newtodo" /> <input type="submit" ng-click=""todos.push({item:newtodo, done:false}) /> </form>
以上,把数据源放在$rootscope中的某个字段中,很容易被重写。
■ 数据源放在service中,把servie注入到run函数中
app.service("todoservice", function(){ this.todos = [ {item:"",done:true}, {item:"",done:false} ]; }) app.run(function($rootscope, todoservice){ $rootscope.todoservice = todoservice; }) <div ng-repeat="todo in todoservice.todos"> {{todo.item}} </div> <form> <input type="text" ng-model="newtodo" /> <input type="submit" ng-click=""todoservice.todos.push({item:newtodo, done:false}) /> </form>
在html中似乎这样写比较好:
<input type="submit" ng-click=""todoservice.todos.addodo(newtodo) />
在service中增加一个方法:
app.service("todoservice", function(){ this.todos = [ {item:"",done:true}, {item:"",done:false} ]; this.addtodo = fucntion(newtodo){ this.todos.push({item:newtodo, done:false}) } })
■ 数据源放在service中,把servie注入到controller中
app.controller("todoctrl", function($scope, todoservice){ this.todoservice = todoservce; })
在对应的html中:
<body ng-app="app" ng-controller="todoctrl as todoctrl"> <div ng-repeat="todo in todoctrl.todoservice.todos"> {{todo.item}} </div> </body> <form> <input type="text" ng-model="newtodo" /> <input type="submit" ng-click="todoctrl.todoservice.addtodo(newtodo)"/> </form>
■ 数据源放在service中,把servie注入到controller中,与服务端交互
在实际项目中,service还需要和服务端交互。
var app = angular.module("app",[]); app.service("todoservice", function($q, $timeout){ this.gettodos = function(){ var d = $q.defer(); //模拟一个请求 $timeout(function(){ d.resolve([ {item:"", done:false}, ... ]) },3000); return d.promise; } this.addtodo = function(item){ this.todos.push({item:item, done:false}); } }) app.controller("todoctrl", function(todoservice){ var todoctrl = this; todoservice.gettodos().then(function(result){ todoctrl.todos = result; }) todoctrl.addtodo = todoservice.addtodo; })
以上就是angularjs中获取数据源的方法,希望对大家的学习有所帮助。
下一篇: 女鬼怀孕了
推荐阅读
-
java定义数组的几种方式(java中数组定义的三种方式)
-
angularJS1 url中携带参数的获取方法
-
教你在javascript中创建元素的三种方式
-
Struts 2中实现Ajax的三种方式
-
Spring在代码中获取bean的几种方式详解
-
PHP中数据类型转换的三种方式
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
-
三种AngularJS中获取数据源的方式
-
在Shell脚本中调用另一个脚本的三种方式讲解
-
AngularJS中实现显示或隐藏动画效果的方式总结