Skip to content

Instantly share code, notes, and snippets.

@chancancode
Created July 7, 2020 20:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chancancode/f5a1c7426fd8f17a2edc2f7a1187bca7 to your computer and use it in GitHub Desktop.
Save chancancode/f5a1c7426fd8f17a2edc2f7a1187bca7 to your computer and use it in GitHub Desktop.
New Twiddle
import Controller from '@ember/controller';
import ArrayProxy from '@ember/array/proxy';
import { action } from '@ember/object';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
count = 0;
proxy = ArrayProxy.create({
content: ['initial', 'content', `revision = ${this.count++}`]
});
@action pushObjectProxy() {
this.proxy.pushObject(`pushed (via proxy) = ${this.count++}`);
}
@action pushObjectInner() {
this.proxy.content.pushObject(`pushed (via inner) = ${this.count++}`);
}
@action replaceInnerArray() {
this.set('proxy.content', ['replaced', 'content', `revision = ${this.count++}`]);
}
get innerWithoutSquareBrackets() {
return '[' + this.get('proxy.content').join(', ') + ']';
}
get innerWithSquareBrackets() {
this.get('proxy.content.[]')
return '[' + this.get('proxy.content').join(', ') + ']';
}
get proxyWithoutSquareBrackets() {
return '[' + this.get('proxy').toArray().join(', ') + ']';
}
get proxyWithSquareBrackets() {
this.get('proxy.[]')
return '[' + this.get('proxy').toArray().join(', ') + ']';
}
}
<p>
<code>Inner without .[]</code>:<br>
<code>{{this.innerWithoutSquareBrackets}}</code>
</p>
<p>
<code>Inner with .[]</code>:<br>
<code>{{this.innerWithSquareBrackets}}</code>
</p>
<p>
<code>Proxy without .content.[]</code>:<br>
<code>{{this.proxyWithoutSquareBrackets}}</code>
</p>
<p>
<code>Proxy with .content.[]</code>:<br>
<code>{{this.proxyWithSquareBrackets}}</code>
</p>
<p>
<button {{on "click" this.pushObjectProxy}}>
Push via array proxy
</button>
</p>
<p>
<button {{on "click" this.pushObjectInner}}>
Push via inner array
</button>
</p>
<p>
<button {{on "click" this.replaceInnerArray}}>
Replace inner array
</button>
</p>
import Application from '../app';
import config from '../config/environment';
import { setApplication } from '@ember/test-helpers';
import { assign } from '@ember/polyfills';
import { start } from 'ember-qunit';
let attributes = {
rootElement: '#test-root',
autoboot: false
};
attributes = assign(attributes, config.APP);
let application = Application.create(attributes);
setApplication(application);
start();
{
"version": "0.17.1",
"EmberENV": {
"FEATURES": {},
"_TEMPLATE_ONLY_GLIMMER_COMPONENTS": false,
"_APPLICATION_TEMPLATE_WRAPPER": true,
"_JQUERY_INTEGRATION": true
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js",
"ember": "3.18.1",
"ember-template-compiler": "3.18.1",
"ember-testing": "3.18.1"
},
"addons": {
"@glimmer/component": "1.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment