AngularJS中获取数据源的几种方式

在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;
})
时间: 2024-12-28 22:34:26

AngularJS中获取数据源的几种方式的相关文章

java中获取路径的几种方式

总是忘记, 备份一下,方便下次用. 第一种: File directory = new File("");//参数为空 String courseFile = directory.getCanonicalPath() ;System.out.println(courseFile); 结果:C:\Documents and Settings\Administrator\workspace\projectName获取当前类的所在工程路径; 第二种: File f = new File(th

5.struts2中Action类中获取ServletAPI的三种方式

**Servlet的API的访问(开发中偶尔会使用到)** 1.在Action类中也可以获取到Servlet一些常用的API,有如下三种方式获取 * 完全解耦合的方式 * 使用接口注入的方式 * 使用ServletActionContext中静态方法直接访问Servlet的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的页面上. * 提供JSP注册的页面,演示下面这三种方式: <h3>注册页面</

android中获取打气筒的几种方式

1,简单说明,打气筒就是将我们的xml布局转换为我们的view对象,不扯远了,直接看代码 1 A:从context中获取 2 LayoutInflater inflater1 = LayoutInflater.from(this); 3 B:通过Activitiy直接获取 4 LayoutInflater inflater2 = this.getLayoutInflater(); 5 C:根据SystemService获取资源 6 LayoutInflater inflater3 = (Layo

Java中获取配置文件的四种方式

一,类加载器classLoader 二,getResourcesAsStream方法 三,Properties对象 四,ResouceBundle对象 五,四种方式代码演示 public class LoadProperties { public static void main(String[] args) throws Exception, IOException { //方式一,在项目同级目录下 /*Properties p = new Properties(); p.load(new F

Spring在代码中获取bean的几种方式(转:http://www.dexcoder.com/selfly/article/326)

方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObjectSupport 方法四:继承自抽象类WebApplicationObjectSupport 方法五:实现接口ApplicationContextAware 方法六:通过Spring提供的ContextLoader 获取spring中bean的方式总结: 方法一:在初始化时保存Applicati

001-Spring在代码中获取bean的几种方式

一.概述 方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObjectSupport 方法四:继承自抽象类WebApplicationObjectSupport 方法五:实现接口ApplicationContextAware 方法六:通过Spring提供的ContextLoader 二.详细介绍 1.在初始化时保存ApplicationContext对

Spring在代码中获取bean的几种方式

方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObjectSupport 方法四:继承自抽象类WebApplicationObjectSupport 方法五:实现接口ApplicationContextAware 方法六:通过Spring提供的ContextLoader 获取spring中bean的方式总结: 方法一:在初始化时保存Applicati

jquery中获取元素的几种方式小结

1 从集合中通过指定的序号获取元素 html: 复制代码代码如下: <div> <p>0</p> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> </div> JS 复制代码代码如下: <script type

android 自定义控件中获取属性的三种方式(转)

第一种方法,直接设置属性值,通过attrs.getAttributeResourceValue拿到这个属性值. (1)在xml文件中设置属性值 <com.example.activity.IconTextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/smile1" iconSrc="