ember-source 1.9.0.beta.1.1 → 1.9.0.beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ember-source might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +219 -116
- data/dist/ember-testing.js +1 -1
- data/dist/ember-tests.js +1380 -612
- data/dist/ember-tests.prod.js +1380 -612
- data/dist/ember.js +325 -227
- data/dist/ember.min.js +12 -12
- data/dist/ember.prod.js +321 -228
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b5bdf7f697b229ccfc473515d48c1e117cd5ba4
|
4
|
+
data.tar.gz: 9d459b5467cb8c23c8491811ddd3b475220116f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18658ffa6334570fab616173a87f719b697c886782dd1709923a42224ad5a5f53a2a9acc3b1cb47b346ca98ebcb2588303935bb574f1235b69ca86630511d542
|
7
|
+
data.tar.gz: c0d01faf1cd115c9c9185766104dd3b7cd46655a7177f04eb5422305564e432cfc3ef6620383b43c7febc7e8d1e91024924bab68eea9fea60b9e04030b47de00
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.9.0-beta.
|
1
|
+
1.9.0-beta.3
|
data/dist/ember-runtime.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
6
6
|
* @license Licensed under MIT license
|
7
7
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
8
|
-
* @version 1.9.0-beta.
|
8
|
+
* @version 1.9.0-beta.3
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -193,6 +193,23 @@ define("backburner",
|
|
193
193
|
}
|
194
194
|
},
|
195
195
|
|
196
|
+
join: function(target, method /*, args */) {
|
197
|
+
if (this.currentInstance) {
|
198
|
+
if (!method) {
|
199
|
+
method = target;
|
200
|
+
target = null;
|
201
|
+
}
|
202
|
+
|
203
|
+
if (isString(method)) {
|
204
|
+
method = target[method];
|
205
|
+
}
|
206
|
+
|
207
|
+
return method.apply(target, slice.call(arguments, 2));
|
208
|
+
} else {
|
209
|
+
return this.run.apply(this, arguments);
|
210
|
+
}
|
211
|
+
},
|
212
|
+
|
196
213
|
defer: function(queueName, target, method /* , args */) {
|
197
214
|
if (!method) {
|
198
215
|
method = target;
|
@@ -1178,20 +1195,6 @@ define("container/container",
|
|
1178
1195
|
return container;
|
1179
1196
|
},
|
1180
1197
|
|
1181
|
-
/**
|
1182
|
-
Sets a key-value pair on the current container. If a parent container,
|
1183
|
-
has the same key, once set on a child, the parent and child will diverge
|
1184
|
-
as expected.
|
1185
|
-
|
1186
|
-
@method set
|
1187
|
-
@param {Object} object
|
1188
|
-
@param {String} key
|
1189
|
-
@param {any} value
|
1190
|
-
*/
|
1191
|
-
set: function(object, key, value) {
|
1192
|
-
object[key] = value;
|
1193
|
-
},
|
1194
|
-
|
1195
1198
|
/**
|
1196
1199
|
Registers a factory for later injection.
|
1197
1200
|
|
@@ -1447,11 +1450,13 @@ define("container/container",
|
|
1447
1450
|
|
1448
1451
|
/**
|
1449
1452
|
@method options
|
1450
|
-
@param {String}
|
1453
|
+
@param {String} fullName
|
1451
1454
|
@param {Object} options
|
1452
1455
|
*/
|
1453
|
-
options: function(
|
1454
|
-
|
1456
|
+
options: function(fullName, options) {
|
1457
|
+
options = options || {};
|
1458
|
+
var normalizedName = this.normalize(fullName);
|
1459
|
+
this._options[normalizedName] = options;
|
1455
1460
|
},
|
1456
1461
|
|
1457
1462
|
/**
|
@@ -2668,7 +2673,9 @@ define("ember-metal/binding",
|
|
2668
2673
|
addObserver(obj, fromPath, this, this.fromDidChange);
|
2669
2674
|
|
2670
2675
|
// if the binding is a two-way binding, also set up an observer on the target
|
2671
|
-
if (!this._oneWay) {
|
2676
|
+
if (!this._oneWay) {
|
2677
|
+
addObserver(obj, toPath, this, this.toDidChange);
|
2678
|
+
}
|
2672
2679
|
|
2673
2680
|
this._readyToSync = true;
|
2674
2681
|
|
@@ -2693,7 +2700,9 @@ define("ember-metal/binding",
|
|
2693
2700
|
removeObserver(obj, this._from, this, this.fromDidChange);
|
2694
2701
|
|
2695
2702
|
// if the binding is two-way, remove the observer from the target as well
|
2696
|
-
if (twoWay) {
|
2703
|
+
if (twoWay) {
|
2704
|
+
removeObserver(obj, this._to, this, this.toDidChange);
|
2705
|
+
}
|
2697
2706
|
|
2698
2707
|
this._readyToSync = false; // disable scheduled syncs...
|
2699
2708
|
return this;
|
@@ -3079,7 +3088,9 @@ define("ember-metal/chains",
|
|
3079
3088
|
var queue = pendingQueue;
|
3080
3089
|
pendingQueue = [];
|
3081
3090
|
|
3082
|
-
forEach.call(queue, function(q) {
|
3091
|
+
forEach.call(queue, function(q) {
|
3092
|
+
q[0].add(q[1]);
|
3093
|
+
});
|
3083
3094
|
|
3084
3095
|
warn('Watching an undefined global, Ember expects watched globals to be' +
|
3085
3096
|
' setup by the time the run loop is flushed, check for typos', pendingQueue.length === 0);
|
@@ -3095,7 +3106,9 @@ define("ember-metal/chains",
|
|
3095
3106
|
nodes = m.chainWatchers = {};
|
3096
3107
|
}
|
3097
3108
|
|
3098
|
-
if (!nodes[keyName]) {
|
3109
|
+
if (!nodes[keyName]) {
|
3110
|
+
nodes[keyName] = [];
|
3111
|
+
}
|
3099
3112
|
nodes[keyName].push(node);
|
3100
3113
|
watchKey(obj, keyName, m);
|
3101
3114
|
}
|
@@ -3139,7 +3152,9 @@ define("ember-metal/chains",
|
|
3139
3152
|
this._paths = {};
|
3140
3153
|
if (this._watching) {
|
3141
3154
|
this._object = parent.value();
|
3142
|
-
if (this._object) {
|
3155
|
+
if (this._object) {
|
3156
|
+
addChainWatcher(this._object, this._key, this);
|
3157
|
+
}
|
3143
3158
|
}
|
3144
3159
|
|
3145
3160
|
// Special-case: the EachProxy relies on immediate evaluation to
|
@@ -3159,9 +3174,13 @@ define("ember-metal/chains",
|
|
3159
3174
|
|
3160
3175
|
var meta = obj['__ember_meta__'];
|
3161
3176
|
// check if object meant only to be a prototype
|
3162
|
-
if (meta && meta.proto === obj)
|
3177
|
+
if (meta && meta.proto === obj) {
|
3178
|
+
return undefined;
|
3179
|
+
}
|
3163
3180
|
|
3164
|
-
if (key === "@each")
|
3181
|
+
if (key === "@each") {
|
3182
|
+
return get(obj, key);
|
3183
|
+
}
|
3165
3184
|
|
3166
3185
|
// if a CP only return cached value
|
3167
3186
|
var desc = meta && meta.descs[key];
|
@@ -3187,7 +3206,9 @@ define("ember-metal/chains",
|
|
3187
3206
|
ChainNodePrototype.destroy = function() {
|
3188
3207
|
if (this._watching) {
|
3189
3208
|
var obj = this._object;
|
3190
|
-
if (obj) {
|
3209
|
+
if (obj) {
|
3210
|
+
removeChainWatcher(obj, this._key, this);
|
3211
|
+
}
|
3191
3212
|
this._watching = false; // so future calls do nothing
|
3192
3213
|
}
|
3193
3214
|
};
|
@@ -3199,7 +3220,10 @@ define("ember-metal/chains",
|
|
3199
3220
|
var path;
|
3200
3221
|
|
3201
3222
|
for (path in paths) {
|
3202
|
-
|
3223
|
+
// this check will also catch non-number vals.
|
3224
|
+
if (paths[path] <= 0) {
|
3225
|
+
continue;
|
3226
|
+
}
|
3203
3227
|
ret.add(path);
|
3204
3228
|
}
|
3205
3229
|
return ret;
|
@@ -3246,7 +3270,9 @@ define("ember-metal/chains",
|
|
3246
3270
|
var obj, tuple, key, src, paths;
|
3247
3271
|
|
3248
3272
|
paths = this._paths;
|
3249
|
-
if (paths[path] > 0) {
|
3273
|
+
if (paths[path] > 0) {
|
3274
|
+
paths[path]--;
|
3275
|
+
}
|
3250
3276
|
|
3251
3277
|
obj = this.value();
|
3252
3278
|
tuple = normalizeTuple(obj, path);
|
@@ -3269,10 +3295,14 @@ define("ember-metal/chains",
|
|
3269
3295
|
ChainNodePrototype.chain = function(key, path, src) {
|
3270
3296
|
var chains = this._chains;
|
3271
3297
|
var node;
|
3272
|
-
if (!chains) {
|
3298
|
+
if (!chains) {
|
3299
|
+
chains = this._chains = {};
|
3300
|
+
}
|
3273
3301
|
|
3274
3302
|
node = chains[key];
|
3275
|
-
if (!node) {
|
3303
|
+
if (!node) {
|
3304
|
+
node = chains[key] = new ChainNode(this, key, src);
|
3305
|
+
}
|
3276
3306
|
node.count++; // count chains...
|
3277
3307
|
|
3278
3308
|
// chain rest of path if there is one
|
@@ -3288,10 +3318,10 @@ define("ember-metal/chains",
|
|
3288
3318
|
var node = chains[key];
|
3289
3319
|
|
3290
3320
|
// unchain rest of path first...
|
3291
|
-
if (path && path.length>1) {
|
3292
|
-
|
3293
|
-
|
3294
|
-
node.unchain(
|
3321
|
+
if (path && path.length > 1) {
|
3322
|
+
var nextKey = firstKey(path);
|
3323
|
+
var nextPath = path.slice(nextKey.length + 1);
|
3324
|
+
node.unchain(nextKey, nextPath);
|
3295
3325
|
}
|
3296
3326
|
|
3297
3327
|
// delete node if needed.
|
@@ -3307,16 +3337,22 @@ define("ember-metal/chains",
|
|
3307
3337
|
var chains = this._chains;
|
3308
3338
|
if (chains) {
|
3309
3339
|
for(var key in chains) {
|
3310
|
-
if (!chains.hasOwnProperty(key)) {
|
3340
|
+
if (!chains.hasOwnProperty(key)) {
|
3341
|
+
continue;
|
3342
|
+
}
|
3311
3343
|
chains[key].willChange(events);
|
3312
3344
|
}
|
3313
3345
|
}
|
3314
3346
|
|
3315
|
-
if (this._parent) {
|
3347
|
+
if (this._parent) {
|
3348
|
+
this._parent.chainWillChange(this, this._key, 1, events);
|
3349
|
+
}
|
3316
3350
|
};
|
3317
3351
|
|
3318
3352
|
ChainNodePrototype.chainWillChange = function(chain, path, depth, events) {
|
3319
|
-
if (this._key) {
|
3353
|
+
if (this._key) {
|
3354
|
+
path = this._key + '.' + path;
|
3355
|
+
}
|
3320
3356
|
|
3321
3357
|
if (this._parent) {
|
3322
3358
|
this._parent.chainWillChange(this, path, depth+1, events);
|
@@ -3332,7 +3368,10 @@ define("ember-metal/chains",
|
|
3332
3368
|
};
|
3333
3369
|
|
3334
3370
|
ChainNodePrototype.chainDidChange = function(chain, path, depth, events) {
|
3335
|
-
if (this._key) {
|
3371
|
+
if (this._key) {
|
3372
|
+
path = this._key + '.' + path;
|
3373
|
+
}
|
3374
|
+
|
3336
3375
|
if (this._parent) {
|
3337
3376
|
this._parent.chainDidChange(this, path, depth+1, events);
|
3338
3377
|
} else {
|
@@ -3359,8 +3398,9 @@ define("ember-metal/chains",
|
|
3359
3398
|
|
3360
3399
|
// Special-case: the EachProxy relies on immediate evaluation to
|
3361
3400
|
// establish its observers.
|
3362
|
-
if (this._parent && this._parent._key === '@each')
|
3401
|
+
if (this._parent && this._parent._key === '@each') {
|
3363
3402
|
this.value();
|
3403
|
+
}
|
3364
3404
|
}
|
3365
3405
|
|
3366
3406
|
// then notify chains...
|
@@ -3373,22 +3413,30 @@ define("ember-metal/chains",
|
|
3373
3413
|
}
|
3374
3414
|
|
3375
3415
|
// if no events are passed in then we only care about the above wiring update
|
3376
|
-
if (events === null) {
|
3416
|
+
if (events === null) {
|
3417
|
+
return;
|
3418
|
+
}
|
3377
3419
|
|
3378
3420
|
// and finally tell parent about my path changing...
|
3379
|
-
if (this._parent) {
|
3421
|
+
if (this._parent) {
|
3422
|
+
this._parent.chainDidChange(this, this._key, 1, events);
|
3423
|
+
}
|
3380
3424
|
};
|
3381
3425
|
|
3382
3426
|
function finishChains(obj) {
|
3383
3427
|
// We only create meta if we really have to
|
3384
|
-
var m = obj['__ember_meta__']
|
3385
|
-
|
3428
|
+
var m = obj['__ember_meta__'];
|
3429
|
+
var chains, chainWatchers, chainNodes;
|
3430
|
+
|
3386
3431
|
if (m) {
|
3387
3432
|
// finish any current chains node watchers that reference obj
|
3388
3433
|
chainWatchers = m.chainWatchers;
|
3389
3434
|
if (chainWatchers) {
|
3390
3435
|
for(var key in chainWatchers) {
|
3391
|
-
if (!chainWatchers.hasOwnProperty(key)) {
|
3436
|
+
if (!chainWatchers.hasOwnProperty(key)) {
|
3437
|
+
continue;
|
3438
|
+
}
|
3439
|
+
|
3392
3440
|
chainNodes = chainWatchers[key];
|
3393
3441
|
if (chainNodes) {
|
3394
3442
|
for (var i=0,l=chainNodes.length;i<l;i++) {
|
@@ -3441,18 +3489,18 @@ define("ember-metal/computed",
|
|
3441
3489
|
//
|
3442
3490
|
|
3443
3491
|
/**
|
3444
|
-
A computed property transforms an
|
3492
|
+
A computed property transforms an object's function into a property.
|
3445
3493
|
|
3446
3494
|
By default the function backing the computed property will only be called
|
3447
3495
|
once and the result will be cached. You can specify various properties
|
3448
|
-
that your computed property
|
3496
|
+
that your computed property depends on. This will force the cached
|
3449
3497
|
result to be recomputed if the dependencies are modified.
|
3450
3498
|
|
3451
3499
|
In the following example we declare a computed property (by calling
|
3452
|
-
`.property()` on the fullName function) and setup the
|
3500
|
+
`.property()` on the fullName function) and setup the property
|
3453
3501
|
dependencies (depending on firstName and lastName). The fullName function
|
3454
3502
|
will be called once (regardless of how many times it is accessed) as long
|
3455
|
-
as
|
3503
|
+
as its dependencies have not changed. Once firstName or lastName are updated
|
3456
3504
|
any future calls (or anything bound) to fullName will incorporate the new
|
3457
3505
|
values.
|
3458
3506
|
|
@@ -3748,7 +3796,9 @@ define("ember-metal/computed",
|
|
3748
3796
|
}
|
3749
3797
|
|
3750
3798
|
chainNodes = meta.chainWatchers && meta.chainWatchers[keyName];
|
3751
|
-
if (chainNodes) {
|
3799
|
+
if (chainNodes) {
|
3800
|
+
finishChains(chainNodes);
|
3801
|
+
}
|
3752
3802
|
addDependentKeys(this, obj, keyName, meta);
|
3753
3803
|
} else {
|
3754
3804
|
ret = this.func.call(obj, keyName);
|
@@ -3990,7 +4040,9 @@ define("ember-metal/computed",
|
|
3990
4040
|
var cache = meta && meta.cache;
|
3991
4041
|
var ret = cache && cache[key];
|
3992
4042
|
|
3993
|
-
if (ret === UNDEFINED) {
|
4043
|
+
if (ret === UNDEFINED) {
|
4044
|
+
return undefined;
|
4045
|
+
}
|
3994
4046
|
return ret;
|
3995
4047
|
}
|
3996
4048
|
|
@@ -4004,7 +4056,9 @@ define("ember-metal/computed",
|
|
4004
4056
|
|
4005
4057
|
cacheFor.get = function(cache, key) {
|
4006
4058
|
var ret = cache[key];
|
4007
|
-
if (ret === UNDEFINED) {
|
4059
|
+
if (ret === UNDEFINED) {
|
4060
|
+
return undefined;
|
4061
|
+
}
|
4008
4062
|
return ret;
|
4009
4063
|
};
|
4010
4064
|
|
@@ -4749,7 +4803,7 @@ define("ember-metal/core",
|
|
4749
4803
|
|
4750
4804
|
@class Ember
|
4751
4805
|
@static
|
4752
|
-
@version 1.9.0-beta.
|
4806
|
+
@version 1.9.0-beta.3
|
4753
4807
|
*/
|
4754
4808
|
|
4755
4809
|
if ('undefined' === typeof Ember) {
|
@@ -4776,10 +4830,10 @@ define("ember-metal/core",
|
|
4776
4830
|
/**
|
4777
4831
|
@property VERSION
|
4778
4832
|
@type String
|
4779
|
-
@default '1.9.0-beta.
|
4833
|
+
@default '1.9.0-beta.3'
|
4780
4834
|
@static
|
4781
4835
|
*/
|
4782
|
-
Ember.VERSION = '1.9.0-beta.
|
4836
|
+
Ember.VERSION = '1.9.0-beta.3';
|
4783
4837
|
|
4784
4838
|
/**
|
4785
4839
|
Standard environmental variables. You can define these in a global `EmberENV`
|
@@ -4894,7 +4948,7 @@ define("ember-metal/core",
|
|
4894
4948
|
Ember.LOG_STACKTRACE_ON_DEPRECATION = (Ember.ENV.LOG_STACKTRACE_ON_DEPRECATION !== false);
|
4895
4949
|
|
4896
4950
|
/**
|
4897
|
-
Determines whether Ember should add ECMAScript 5 shims to older browsers.
|
4951
|
+
Determines whether Ember should add ECMAScript 5 Array shims to older browsers.
|
4898
4952
|
|
4899
4953
|
@property SHIM_ES5
|
4900
4954
|
@type Boolean
|
@@ -6427,7 +6481,8 @@ define("ember-metal/keys",
|
|
6427
6481
|
throw new TypeError('Object.keys called on non-object');
|
6428
6482
|
}
|
6429
6483
|
|
6430
|
-
var result = []
|
6484
|
+
var result = [];
|
6485
|
+
var prop, i;
|
6431
6486
|
|
6432
6487
|
for (prop in obj) {
|
6433
6488
|
if (prop !== '_super' &&
|
@@ -6517,8 +6572,12 @@ define("ember-metal/logger",
|
|
6517
6572
|
var method = typeof consoleObj === 'object' ? consoleObj[name] : null;
|
6518
6573
|
|
6519
6574
|
if (method) {
|
6520
|
-
// Older IE doesn't support
|
6521
|
-
if (typeof method.
|
6575
|
+
// Older IE doesn't support bind, but Chrome needs it
|
6576
|
+
if (typeof method.bind === 'function') {
|
6577
|
+
logToConsole = method.bind(consoleObj);
|
6578
|
+
logToConsole.displayName = 'console.' + name;
|
6579
|
+
return logToConsole;
|
6580
|
+
} else if (typeof method.apply === 'function') {
|
6522
6581
|
logToConsole = function() {
|
6523
6582
|
method.apply(consoleObj, arguments);
|
6524
6583
|
};
|
@@ -7211,7 +7270,6 @@ define("ember-metal/mixin",
|
|
7211
7270
|
var Ember = __dependency1__["default"];
|
7212
7271
|
// warn, assert, wrap, et;
|
7213
7272
|
var merge = __dependency2__["default"];
|
7214
|
-
var a_map = __dependency3__.map;
|
7215
7273
|
var a_indexOf = __dependency3__.indexOf;
|
7216
7274
|
var a_forEach = __dependency3__.forEach;
|
7217
7275
|
var o_create = __dependency4__.create;
|
@@ -7266,22 +7324,6 @@ define("ember-metal/mixin",
|
|
7266
7324
|
return ret;
|
7267
7325
|
}
|
7268
7326
|
|
7269
|
-
function initMixin(mixin, args) {
|
7270
|
-
if (args && args.length > 0) {
|
7271
|
-
mixin.mixins = a_map.call(args, function(x) {
|
7272
|
-
if (x instanceof Mixin) { return x; }
|
7273
|
-
|
7274
|
-
// Note: Manually setup a primitive mixin here. This is the only
|
7275
|
-
// way to actually get a primitive mixin. This way normal creation
|
7276
|
-
// of mixins will give you combined mixins...
|
7277
|
-
var mixin = new Mixin();
|
7278
|
-
mixin.properties = x;
|
7279
|
-
return mixin;
|
7280
|
-
});
|
7281
|
-
}
|
7282
|
-
return mixin;
|
7283
|
-
}
|
7284
|
-
|
7285
7327
|
function isMethod(obj) {
|
7286
7328
|
return 'function' === typeof obj &&
|
7287
7329
|
obj.isMethod !== false &&
|
@@ -7728,12 +7770,29 @@ define("ember-metal/mixin",
|
|
7728
7770
|
@namespace Ember
|
7729
7771
|
*/
|
7730
7772
|
__exports__["default"] = Mixin;
|
7731
|
-
function Mixin(
|
7732
|
-
|
7733
|
-
|
7734
|
-
|
7735
|
-
|
7736
|
-
|
7773
|
+
function Mixin(args, properties) {
|
7774
|
+
this.properties = properties;
|
7775
|
+
|
7776
|
+
var length = args && args.length;
|
7777
|
+
|
7778
|
+
if (length > 0) {
|
7779
|
+
var m = new Array(length);
|
7780
|
+
|
7781
|
+
for (var i = 0; i < length; i++) {
|
7782
|
+
var x = args[i];
|
7783
|
+
if (x instanceof Mixin) {
|
7784
|
+
m[i] = x;
|
7785
|
+
} else {
|
7786
|
+
m[i] = new Mixin(undefined, x);
|
7787
|
+
}
|
7788
|
+
}
|
7789
|
+
|
7790
|
+
this.mixins = m;
|
7791
|
+
} else {
|
7792
|
+
this.mixins = undefined;
|
7793
|
+
}
|
7794
|
+
this.ownerConstructor = undefined;
|
7795
|
+
}
|
7737
7796
|
|
7738
7797
|
Mixin._apply = applyMixin;
|
7739
7798
|
|
@@ -7756,7 +7815,12 @@ define("ember-metal/mixin",
|
|
7756
7815
|
// ES6TODO: this relies on a global state?
|
7757
7816
|
Ember.anyUnprocessedMixins = true;
|
7758
7817
|
var M = this;
|
7759
|
-
|
7818
|
+
var length = arguments.length;
|
7819
|
+
var args = new Array(length);
|
7820
|
+
for (var i = 0; i < length; i++) {
|
7821
|
+
args[i] = arguments[i];
|
7822
|
+
}
|
7823
|
+
return new M(args, undefined);
|
7760
7824
|
};
|
7761
7825
|
|
7762
7826
|
var MixinPrototype = Mixin.prototype;
|
@@ -7766,12 +7830,11 @@ define("ember-metal/mixin",
|
|
7766
7830
|
@param arguments*
|
7767
7831
|
*/
|
7768
7832
|
MixinPrototype.reopen = function() {
|
7769
|
-
var mixin
|
7833
|
+
var mixin;
|
7770
7834
|
|
7771
7835
|
if (this.properties) {
|
7772
|
-
mixin = Mixin.
|
7773
|
-
|
7774
|
-
delete this.properties;
|
7836
|
+
mixin = new Mixin(undefined, this.properties);
|
7837
|
+
this.properties = undefined;
|
7775
7838
|
this.mixins = [mixin];
|
7776
7839
|
} else if (!this.mixins) {
|
7777
7840
|
this.mixins = [];
|
@@ -7790,9 +7853,7 @@ define("ember-metal/mixin",
|
|
7790
7853
|
if (mixin instanceof Mixin) {
|
7791
7854
|
mixins.push(mixin);
|
7792
7855
|
} else {
|
7793
|
-
|
7794
|
-
tmp.properties = mixin;
|
7795
|
-
mixins.push(tmp);
|
7856
|
+
mixins.push(new Mixin(undefined, mixin));
|
7796
7857
|
}
|
7797
7858
|
}
|
7798
7859
|
|
@@ -7844,7 +7905,7 @@ define("ember-metal/mixin",
|
|
7844
7905
|
};
|
7845
7906
|
|
7846
7907
|
MixinPrototype.without = function() {
|
7847
|
-
var ret = new Mixin(this);
|
7908
|
+
var ret = new Mixin([this]);
|
7848
7909
|
ret._without = a_slice.call(arguments);
|
7849
7910
|
return ret;
|
7850
7911
|
};
|
@@ -7869,7 +7930,9 @@ define("ember-metal/mixin",
|
|
7869
7930
|
var ret = [];
|
7870
7931
|
_keys(keys, this, seen);
|
7871
7932
|
for(var key in keys) {
|
7872
|
-
if (keys.hasOwnProperty(key)) {
|
7933
|
+
if (keys.hasOwnProperty(key)) {
|
7934
|
+
ret.push(key);
|
7935
|
+
}
|
7873
7936
|
}
|
7874
7937
|
return ret;
|
7875
7938
|
};
|
@@ -8827,9 +8890,18 @@ define("ember-metal/property_events",
|
|
8827
8890
|
var proto = m && m.proto;
|
8828
8891
|
var desc = m && m.descs[keyName];
|
8829
8892
|
|
8830
|
-
if (!watching) {
|
8831
|
-
|
8832
|
-
|
8893
|
+
if (!watching) {
|
8894
|
+
return;
|
8895
|
+
}
|
8896
|
+
|
8897
|
+
if (proto === obj) {
|
8898
|
+
return;
|
8899
|
+
}
|
8900
|
+
|
8901
|
+
if (desc && desc.willChange) {
|
8902
|
+
desc.willChange(obj, keyName);
|
8903
|
+
}
|
8904
|
+
|
8833
8905
|
dependentKeysWillChange(obj, keyName, m);
|
8834
8906
|
chainsWillChange(obj, keyName, m);
|
8835
8907
|
notifyBeforeObservers(obj, keyName);
|
@@ -8856,11 +8928,18 @@ define("ember-metal/property_events",
|
|
8856
8928
|
var proto = m && m.proto;
|
8857
8929
|
var desc = m && m.descs[keyName];
|
8858
8930
|
|
8859
|
-
if (proto === obj) {
|
8931
|
+
if (proto === obj) {
|
8932
|
+
return;
|
8933
|
+
}
|
8860
8934
|
|
8861
8935
|
// shouldn't this mean that we're watching this key?
|
8862
|
-
if (desc && desc.didChange) {
|
8863
|
-
|
8936
|
+
if (desc && desc.didChange) {
|
8937
|
+
desc.didChange(obj, keyName);
|
8938
|
+
}
|
8939
|
+
|
8940
|
+
if (!watching && keyName !== 'length') {
|
8941
|
+
return;
|
8942
|
+
}
|
8864
8943
|
|
8865
8944
|
if (m && m.deps && m.deps[keyName]) {
|
8866
8945
|
dependentKeysDidChange(obj, keyName, m);
|
@@ -8879,9 +8958,16 @@ define("ember-metal/property_events",
|
|
8879
8958
|
if (meta && meta.deps && (deps = meta.deps[depKey])) {
|
8880
8959
|
var seen = WILL_SEEN;
|
8881
8960
|
var top = !seen;
|
8882
|
-
|
8961
|
+
|
8962
|
+
if (top) {
|
8963
|
+
seen = WILL_SEEN = {};
|
8964
|
+
}
|
8965
|
+
|
8883
8966
|
iterDeps(propertyWillChange, obj, deps, depKey, seen, meta);
|
8884
|
-
|
8967
|
+
|
8968
|
+
if (top) {
|
8969
|
+
WILL_SEEN = null;
|
8970
|
+
}
|
8885
8971
|
}
|
8886
8972
|
}
|
8887
8973
|
|
@@ -8893,15 +8979,26 @@ define("ember-metal/property_events",
|
|
8893
8979
|
if (meta && meta.deps && (deps = meta.deps[depKey])) {
|
8894
8980
|
var seen = DID_SEEN;
|
8895
8981
|
var top = !seen;
|
8896
|
-
|
8982
|
+
|
8983
|
+
if (top) {
|
8984
|
+
seen = DID_SEEN = {};
|
8985
|
+
}
|
8986
|
+
|
8897
8987
|
iterDeps(propertyDidChange, obj, deps, depKey, seen, meta);
|
8898
|
-
|
8988
|
+
|
8989
|
+
if (top) {
|
8990
|
+
DID_SEEN = null;
|
8991
|
+
}
|
8899
8992
|
}
|
8900
8993
|
}
|
8901
8994
|
|
8902
8995
|
function keysOf(obj) {
|
8903
8996
|
var keys = [];
|
8904
|
-
|
8997
|
+
|
8998
|
+
for (var key in obj) {
|
8999
|
+
keys.push(key);
|
9000
|
+
}
|
9001
|
+
|
8905
9002
|
return keys;
|
8906
9003
|
}
|
8907
9004
|
|
@@ -8909,8 +9006,15 @@ define("ember-metal/property_events",
|
|
8909
9006
|
var keys, key, i, desc;
|
8910
9007
|
var guid = guidFor(obj);
|
8911
9008
|
var current = seen[guid];
|
8912
|
-
|
8913
|
-
if (current
|
9009
|
+
|
9010
|
+
if (!current) {
|
9011
|
+
current = seen[guid] = {};
|
9012
|
+
}
|
9013
|
+
|
9014
|
+
if (current[depKey]) {
|
9015
|
+
return;
|
9016
|
+
}
|
9017
|
+
|
8914
9018
|
current[depKey] = true;
|
8915
9019
|
|
8916
9020
|
if (deps) {
|
@@ -8919,7 +9023,11 @@ define("ember-metal/property_events",
|
|
8919
9023
|
for (i=0; i<keys.length; i++) {
|
8920
9024
|
key = keys[i];
|
8921
9025
|
desc = descs[key];
|
8922
|
-
|
9026
|
+
|
9027
|
+
if (desc && desc._suspended === obj) {
|
9028
|
+
continue;
|
9029
|
+
}
|
9030
|
+
|
8923
9031
|
method(obj, key);
|
8924
9032
|
}
|
8925
9033
|
}
|
@@ -9492,14 +9600,8 @@ define("ember-metal/run_loop",
|
|
9492
9600
|
@return {Object} Return value from invoking the passed function. Please note,
|
9493
9601
|
when called within an existing loop, no return value is possible.
|
9494
9602
|
*/
|
9495
|
-
run.join = function(
|
9496
|
-
|
9497
|
-
return Ember.run.apply(Ember, arguments);
|
9498
|
-
}
|
9499
|
-
|
9500
|
-
var args = slice.call(arguments);
|
9501
|
-
args.unshift('actions');
|
9502
|
-
run.schedule.apply(run, args);
|
9603
|
+
run.join = function() {
|
9604
|
+
return backburner.join.apply(backburner, arguments);
|
9503
9605
|
};
|
9504
9606
|
|
9505
9607
|
/**
|
@@ -11306,7 +11408,8 @@ define("ember-metal/watch_key",
|
|
11306
11408
|
|
11307
11409
|
|
11308
11410
|
function unwatchKey(obj, keyName, meta) {
|
11309
|
-
var m = meta || metaFor(obj)
|
11411
|
+
var m = meta || metaFor(obj);
|
11412
|
+
var watching = m.watching;
|
11310
11413
|
|
11311
11414
|
if (watching[keyName] === 1) {
|
11312
11415
|
watching[keyName] = 0;
|
@@ -13723,8 +13826,8 @@ define("ember-runtime/controllers/array_controller",
|
|
13723
13826
|
Then, create a view that binds to your new controller:
|
13724
13827
|
|
13725
13828
|
```handlebars
|
13726
|
-
{{#each MyApp.listController}}
|
13727
|
-
{{firstName}} {{lastName}}
|
13829
|
+
{{#each person in MyApp.listController}}
|
13830
|
+
{{person.firstName}} {{person.lastName}}
|
13728
13831
|
{{/each}}
|
13729
13832
|
```
|
13730
13833
|
|