> 웹 프론트엔드 > JS 튜토리얼 > AngularJS_AngularJS에서 데이터 소스를 얻는 세 가지 방법

AngularJS_AngularJS에서 데이터 소스를 얻는 세 가지 방법

WBOY
풀어 주다: 2016-05-16 15:16:40
원래의
1145명이 탐색했습니다.

AngularJS에서는 $rootScope에서 데이터 소스를 얻을 수도 있고, 서비스에서 데이터를 얻는 로직을 캡슐화한 후 app.run 함수에 주입하거나 컨트롤러에 주입할 수도 있습니다. 이 기사에서는 데이터를 얻는 여러 가지 방법을 정리합니다.

■ 데이터 소스는 $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의 필드에 배치됩니다.

■ 데이터 소스를 서비스에 배치하고 서비스를 실행 기능에 삽입합니다.

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) />

로그인 후 복사

서비스 방법 추가:

app.service("TodoService", function(){
  this.todos = [
    {item:"",done:true},
    {item:"",done:false}
  ];
  
  this.addTodo = fucntion(newTodo){
    this.todos.push({item:newTodo, done:false})
  }
   
})
로그인 후 복사

■ 데이터 소스를 서비스에 배치하고 서비스를 컨트롤러에 주입합니다

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>

로그인 후 복사

■ 데이터 소스를 서비스에 배치하고, 서비스를 컨트롤러에 삽입하고, 서버와 상호작용합니다.

실제 프로젝트에서는 서비스도 서버와 상호 작용해야 합니다.

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에서 데이터 소스를 얻는 방법입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿