Vue 2 Documentation

Posted on  by admin

Vue is a framework focused on the view layer, helping the development of applications based on components. This page will show you how to use Smart Web Components with Vue.

We will walk you through the steps to add Smart Web Components to an existing Vue project, and configure some of the features.

Smart web Components contains 40+ Web Components with Material Design.

Options / DOM

Server-Side Rendering

Some of the web components are: Grid, Chart, Gannt Chart, Docking Layout. For the purposes of the demo, we will use the Grid web component. We will show you some of the data grid capabilities (properties, data source).

Options / Lifecycle Hooks

Instance Methods / Events

In addition, we will customize the Grid appearance with custom Column Templates.

Instance Methods / Lifecycle

Let's install vue-cli. Then we can start creating our Vue.js projects with:.


vm.$watch( expOrFn, callback, [options] )

Open the "my-project" folder and run: . Make Vue ignore custom elements defined outside of Vue (e.g., using the Web Components APIs). Otherwise, it will throw a warning about an Unknown custom element, assuming that you forgot to register a global component or misspelled a component name.

  • We add the below code to App.vue. smart-grid supports editing by cell, editing by row(Professional) and editing with dialog or command column(Professional).
  • In this case, we will use the cell editing. You can enable the editing functionality by setting the "enabled" boolean property to true. You’re browsing the documentation for v2.x and earlier. For v3.x, click here.
  • Every Vue application starts by creating a new Vue instance with the Vue function:. Although not strictly associated with the MVVM pattern, Vue’s design was partly inspired by it. As a convention, we often use the variable vm (short for ViewModel) to refer to our Vue instance.
  • When you create a Vue instance, you pass in an options object. The majority of this guide describes how you can use these options to create your desired behavior.
  • For reference, you can also browse the full list of options in the API reference.

Declarative Rendering

A Vue application consists of a root Vue instance created with new Vue, optionally organized into a tree of nested, reusable components.



  • For example, a todo app’s component tree might look like this:. We’ll talk about the component system in detail later.

Options / Composition

For now, just know that all Vue components are also Vue instances, and so accept the same options object (except for a few root-specific options).


When a Vue instance is created, it adds all the properties found in its data object to Vue’s reactivity system.


When the values of those properties change, the view will “react”, updating to match the new values. When this data changes, the view will re-render. It should be noted that properties in data are only reactive if they existed when the instance was created. That means if you add a new property, like:. Then changes to b will not trigger any view updates.

If you know you’ll need a property later, but it starts out empty or non-existent, you’ll need to set some initial value. The only exception to this being the use of Object.freeze(), which prevents existing properties from being changed, which also means the reactivity system can’t track changes.

  • In addition to data properties, Vue instances expose a number of useful instance properties and methods.
  • These are prefixed with $ to differentiate them from user-defined properties. In the future, you can consult the API reference for a full list of instance properties and methods.
  • Each Vue instance goes through a series of initialization steps when it’s created - for example, it needs to set up data observation, compile the template, mount the instance to the DOM, and update the DOM when data changes.
  • Along the way, it also runs functions called lifecycle hooks, giving users the opportunity to add their own code at specific stages. For example, the created hook can be used to run code after an instance is created:.
  • There are also other hooks which will be called at different stages of the instance’s lifecycle, such as mounted, updated, and destroyed.
  • All lifecycle hooks are called with their this context pointing to the Vue instance invoking it. Don’t use arrow functions on an options property or callback, such as created: () => console.log(this.a) or vm.$watch('a', newValue => this.myMethod()).
  • Since an arrow function doesn’t have a this, this will be treated as any other variable and lexically looked up through parent scopes until found, often resulting in errors such as Uncaught TypeError: Cannot read property of undefined or Uncaught TypeError: this.myMethod is not a function.
  • Below is a diagram for the instance lifecycle. You don’t need to fully understand everything going on right now, but as you learn and build more, it will be a useful reference. Caught a mistake or want to contribute to the documentation?Edit this on GitHub!Deployed onNetlify .

Instance Methods / Data

Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces. Unlike other monolithic frameworks, Vue is designed from the ground up to be incrementally adoptable.

  • The core library is focused on the view layer only, and is easy to pick up and integrate with other libraries or existing projects.
  • On the other hand, Vue is also perfectly capable of powering sophisticated Single-Page Applications when used in combination with modern tooling and supporting libraries.
  • If you’d like to learn more about Vue before diving in, we created a video walking through the core principles and a sample project.
  • If you are an experienced frontend developer and want to know how Vue compares to other libraries/frameworks, check out the Comparison with Other Frameworks.

The official guide assumes intermediate level knowledge of HTML, CSS, and JavaScript. If you are totally new to frontend development, it might not be the best idea to jump right into a framework as your first step - grasp the basics then come back!

Instance Properties

Prior experience with other frameworks helps, but is not required. The easiest way to try out Vue.js is using the JSFiddle Hello World example.

  • Feel free to open it in another tab and follow along as we go through some basic examples.
  • Or, you can create an index.html file and include Vue with:. The Installation page provides more options of installing Vue. Note: We do not recommend that beginners start with vue-cli, especially if you are not yet familiar with Node.js-based build tools.
  • If you prefer something more interactive, you can also check out this tutorial series on Scrimba, which gives you a mix of screencast and code playground that you can pause and play around with anytime.
  • At the core of Vue.js is a system that enables us to declaratively render data to the DOM using straightforward template syntax:.

We have already created our very first Vue app! This looks pretty similar to rendering a string template, but Vue has done a lot of work under the hood.

Global Config

The data and the DOM are now linked, and everything is now reactive.

  • How do we know?
  • Open your browser’s JavaScript console (right now, on this page) and set app.message to a different value.
  • You should see the rendered example above update accordingly.

In addition to text interpolation, we can also bind element attributes like this:.

Here we are encountering something new. The v-bind attribute you are seeing is called a directive.

Directives are prefixed with v- to indicate that they are special attributes provided by Vue, and as you may have guessed, they apply special reactive behavior to the rendered DOM. Here, it is basically saying “keep this element’s title attribute up-to-date with the message property on the Vue instance.”.

Instance Lifecycle Hooks

If you open up your JavaScript console again and enter app2.message = 'some new message', you’ll once again see that the bound HTML - in this case the title attribute - has been updated.