|
1 | 1 | var Component = require("can-component"); |
2 | | -var List = require("can-list"); |
3 | | -var Map = require("can-map"); |
4 | | -var template = require("./orders.stache!"); |
5 | | -require("./orders.css!"); |
6 | | -require("can-map-define"); |
| 2 | +var DefineMap = require("can-define/map/map"); |
| 3 | +var view = require("./orders.stache!"); |
| 4 | +require("./orders.css"); |
7 | 5 |
|
8 | | -var ViewModel = Map.extend({ |
9 | | - define: { |
10 | | - orders: { |
11 | | - Value: List, |
12 | | - get: function(list){ |
13 | | - var id = "foo"; |
14 | | - |
15 | | - var promise = new Promise(function(resolve){ |
16 | | - resolve([ { a: "a", v: 2 }, { b: "b", v: 5 } ]); |
17 | | - }); |
18 | | - |
19 | | - list.replace(promise); |
20 | | - |
21 | | - return list; |
22 | | - } |
23 | | - }, |
24 | | - totals: { |
25 | | - get: function(){ |
26 | | - var orders = this.attr("orders"); |
27 | | - var totals = 0; |
28 | | - orders.each(function(order){ |
29 | | - totals += order.v; |
30 | | - }); |
31 | | - return totals; |
32 | | - } |
33 | | - }, |
34 | | - showTotals: { |
35 | | - value: false |
| 6 | +var ViewModel = DefineMap.extend({ |
| 7 | + ordersPromise: { |
| 8 | + get: function(){ |
| 9 | + return new Promise(function(resolve){ |
| 10 | + resolve([ { a: "a", v: 2 }, { b: "b", v: 5 } ]); |
| 11 | + }); |
| 12 | + } |
| 13 | + }, |
| 14 | + orders: { |
| 15 | + get: function(last, resolve){ |
| 16 | + this.ordersPromise.then(resolve); |
| 17 | + } |
| 18 | + }, |
| 19 | + totals: { |
| 20 | + get: function(){ |
| 21 | + var orders = this.orders; |
| 22 | + var totals = 0; |
| 23 | + orders.forEach(function(order){ |
| 24 | + totals += order.v; |
| 25 | + }); |
| 26 | + return totals; |
36 | 27 | } |
| 28 | + }, |
| 29 | + showTotals: { |
| 30 | + value: false |
37 | 31 | } |
38 | 32 | }); |
39 | 33 |
|
40 | 34 | Component.extend({ |
41 | 35 | tag: "order-history", |
42 | | - template: template, |
43 | | - viewModel: ViewModel, |
| 36 | + view: view, |
| 37 | + ViewModel: ViewModel, |
44 | 38 | events: { |
45 | 39 | inserted: function(){ |
46 | | - this.viewModel.attr("showTotals", true); |
| 40 | + this.viewModel.showTotals = true; |
47 | 41 | } |
48 | 42 | } |
49 | 43 | }); |
0 commit comments