<div id="app">
  <h2>Установленные приложения:</h2>
  <ol>
    <li v-for="(app, index) in apps">
      <label>
        <span>{{app.title}}</span> <button @click="removeApp(index)">
        X
        </button>
      </label>
    </li>
    <select v-model="selectedApp">
      <option disabled value="">Выберите один из вариантов</option>
      <option v-for="appInfo in appsLibrary"
              v-bind:value="appInfo"
              :disabled="isAdded(appInfo.packageName)">{{appInfo.title}}</option>
    </select>
    <button @click="addApp()">
    add
    </button>
  </ol>
  
  <pre>{{this.manifest}}</pre>
</div>

<script type="javascript">
new Vue({
  el: "#app",
  data: {
  	appsLibrary: [
    	{ 
      	packageName: "com.google.android.gm",
        title: "gmail"
      },
      {
      	packageName: "com.teamviewer.quicksupport.market",
        title: "TeamViewer quicksupport"
      },
    ],
    selectedApp: "",
    apps: [
      
    ]
  },
  computed: {
  	manifest: function() {
    	return JSON.stringify(
      	{
        	applications: this.apps
        }, null, 2
      )
    }
  },
  methods: {
  	toggle: function(todo){
    	todo.done = !todo.done
    },
    addApp: function() {
    	if(!!this.selectedApp) {
      	var appConfig = Object.assign({}, this.selectedApp, {});;
        appConfig.installType = "FORCE_INSTALLED";
				appConfig.defaultPermissionPolicy = "GRANT";
      	appConfig.disabled = false;
      	appConfig.lockTaskAllowed = true;
    		this.apps.push(appConfig);
      }
    },
    removeApp: function(index) {
    	this.apps.splice(index, 1);
    },
    isAdded: function(packageName) {
      return this.apps.some(function(app, index) {
          return app.packageName === packageName;
    	});
  	}
  }
})
</script>

Изменить пасту