Frontend/vue3

AngularJS -> VueJS 변환 ($scope에 대하여)

dddzr 2023. 3. 8. 16:25

AngularJS의 $scope는 Vue.js에서의 데이터와 관련된 영역과 유사한 개념입니다. Vue.js에서는 $scope 대신 데이터 객체를 사용합니다.

AngularJS의 $scope를 Vue.js로 변환하려면 다음과 같은 단계를 따를 수 있습니다.

  1. $scope에 정의된 데이터를 Vue.js 데이터 객체로 변환합니다. Vue.js에서 데이터 객체는 일반 JavaScript 객체입니다.
  2. Vue.js의 데이터 바인딩 구문(v-bind, v-model, {{}})을 사용하여 Vue.js 데이터 객체와 HTML 요소를 연결합니다.
  3. Vue.js의 v-on 디렉티브를 사용하여 HTML 이벤트와 Vue.js 메소드를 연결합니다.
  4. AngularJS의 $watch를 Vue.js의 watch 속성으로 변환합니다.
  5. AngularJS의 $emit과 $broadcast를 Vue.js의 이벤트 버스($emit과 $on)로 변환합니다.
  6. AngularJS의 $digest를 Vue.js에서 사용할 필요가 없습니다. Vue.js는 자동으로 변경 감지 및 렌더링을 처리합니다.

아래는 AngularJS의 $scope를 Vue.js 데이터 객체로 변환하는 간단한 예입니다.

// AngularJS
angular.module('myApp').controller('MyController', function($scope) {
  $scope.message = 'Hello, world!';
});

// Vue.js
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello, world!'
  }
});

이 예에서 $scope.message는 Vue.js의 data 객체의 message 속성으로 변환됩니다. HTML 요소와 Vue.js 데이터 객체를 연결하려면 v-bind 디렉티브를 사용할 수 있습니다.

<!-- AngularJS -->
<div ng-controller="MyController">
  <p>{{message}}</p>
</div>

<!-- Vue.js -->
<div id="app">
  <p>{{message}}</p>
</div>

이제 $scope에서 Vue.js로 데이터를 성공적으로 변환했습니다. 이제 Vue.js의 데이터 바인딩 구문, 디렉티브 및 이벤트 처리 방식을 사용하여 Vue.js 애플리케이션을 작성할 수 있습니다.

 

+ 참고

angular.element("[data-ng-controller=myCtrl]").scope().value
 
이렇게 js파일에서 다른 js파일에 선언된 controller 내부의 scope를 가져오는 코드를 vue로 변환하면?
 
 

Vue.js에서는 $refs를 사용하여 다른 컴포넌트의 인스턴스를 참조할 수 있습니다. Vue.js에서 컨트롤러에 해당하는 것은 컴포넌트입니다.

$refs를 사용하여 다른 컴포넌트의 인스턴스를 가져온 후 해당 인스턴스의 데이터 속성을 사용하여 currentLayer와 같은 값을 가져올 수 있습니다.

예를 들어, 다음과 같이 컴포넌트를 정의하고 ref 속성을 사용하여 해당 컴포넌트의 인스턴스를 참조할 수 있습니다.

<template>
  <div ref="myCtrl">
    ...
  </div>
</template>

 

그런 다음, 해당 컴포넌트의 인스턴스를 JavaScript 코드에서 다음과 같이 가져올 수 있습니다.

var vm = new Vue({
  el: '#app',
  components: {
    'my-component': MyComponent
  },
  mounted: function() {
    var controller = this.$refs.myCtrl;
    var value = controller.value;
    console.log(value);
  }
});

이제 $refs를 사용하여 다른 컴포넌트의 인스턴스를 가져와 해당 인스턴스의 데이터 속성을 사용하여 값을 가져올 수 있습니다.