##// END OF EJS Templates
fixed strict mode @bind decorator
cin -
r28:b88fac0e76c0 v1.0.0-rc13 default
parent child
Show More
@@ -0,0 +1,22
1 import { djbase, djclass, bind, prototype } from "../declare";
2
3 import { DjxWidgetBase } from "../tsx/DjxWidgetBase";
4 import { createElement } from "../tsx";
5
6
7 @djclass
8 export class MyWidget extends djbase(DjxWidgetBase) {
9
10 @bind({node: "titleNode", type:"innerHTML"})
11 title = "";
12
13 @prototype()
14 counter = 0;
15
16 render() {
17 return <div>
18 <h1 data-dojo-attach-point="titleNode"></h1>
19 </div>;
20 }
21
22 }
@@ -43,12 +43,8 configureTsMain {
43
43
44 configureTsTest {
44 configureTsTest {
45 compilerOptions {
45 compilerOptions {
46 baseUrl = "."
46 typeRoots = []
47 paths = [
47 types = ["requirejs", sources.main.output.typingsDir.get().toString() ]
48 "@implab/djx" : [ sources.main.output.typingsDir.get().toString() ],
49 "@implab/djx/*" : [ "${sources.main.output.typingsDir.get().toString()}/*" ]
50 ]
51 types = ["requirejs", sources.main.output.typingsDir.get().toString()]
52 }
48 }
53 }
49 }
54
50
@@ -80,11 +80,11 export function djbase<T0, T1, T2, T3, T
80 /** Создает конструктор-заглушку из списка базовых классов, используется
80 /** Создает конструктор-заглушку из списка базовых классов, используется
81 * для объявления классов при помощи `dojo/_base/declare`.
81 * для объявления классов при помощи `dojo/_base/declare`.
82 *
82 *
83 * Создает пустой конструтор, с пустым стандартным прототипом, это нужно,
83 * Создает пустой конструктор, с пустым стандартным прототипом, это нужно,
84 * поскольку в унаследованном классе конструктор обязательно должен вызвать
84 * поскольку в унаследованном классе конструктор обязательно должен вызвать
85 * `super(...)`, таким образом он вызовет пустую функцию.
85 * `super(...)`, таким образом он вызовет пустую функцию.
86 *
86 *
87 * Созданный конструтор хранит в себе список базовых классов, который будет
87 * Созданный конструктор хранит в себе список базовых классов, который будет
88 * использован декоратором `djclass`, который вернет класс, объявленный при
88 * использован декоратором `djclass`, который вернет класс, объявленный при
89 * помощи `dojo/_base/declare`.
89 * помощи `dojo/_base/declare`.
90 *
90 *
@@ -215,21 +215,17 function isNodeBindSpec(v: any): v is No
215 return "node" in v;
215 return "node" in v;
216 }
216 }
217
217
218 function isMemberBindSpec(v: any): v is MemberBindSpec {
219 return "member" in v;
220 }
221
222 /** Декорирует свойства виджета для привязки их к внутренним членам, либо DOM
218 /** Декорирует свойства виджета для привязки их к внутренним членам, либо DOM
223 * элементам, либо свойству внутреннего объекта.
219 * элементам, либо свойству внутреннего объекта.
224 *
220 *
225 * @param {NodeBindSpec | MemberBindSpec} params Параметры связывания.
221 * @param {NodeBindSpec | MemberBindSpec} params Параметры связывания.
226 */
222 */
227 export function bind(params: NodeBindSpec | MemberBindSpec) {
223 export function bind(params: NodeBindSpec | MemberBindSpec) {
228 if (isNodeBindSpec(params))
224 if (isNodeBindSpec(params)) {
229 return (target: any, name: string) => {
225 return (target: any, name: string) => {
230 target[makeSetterName(name)] = params;
226 target[makeSetterName(name)] = params;
231 };
227 };
232 else if (isMemberBindSpec(params)) {
228 } else {
233 return (target: any, name: string) => {
229 return (target: any, name: string) => {
234 target[name] = null;
230 target[name] = null;
235 target[makeSetterName(name)] = function (v: any) {
231 target[makeSetterName(name)] = function (v: any) {
@@ -7,7 +7,7
7 "typings"
7 "typings"
8 ],
8 ],
9 "types": [
9 "types": [
10 "requirejs", "./typings/index", "dojo-typings"
10 "requirejs", "./typings", "dojo-typings"
11 ]
11 ]
12 }
12 }
13 } No newline at end of file
13 }
@@ -2,3 +2,9 declare module "@implab/djx/css!*" {
2 const result: { url: string };
2 const result: { url: string };
3 export = result;
3 export = result;
4 }
4 }
5
6 declare namespace JSX {
7 interface IntrinsicElements {
8 [name: string]: any;
9 }
10 }
@@ -1,8 +1,7
1 import { test } from "./TestTraits";
1 import { test } from "./TestTraits";
2 import { delay } from "@implab/core-amd/safe";
2 import { delay } from "@implab/core-amd/safe";
3 import { assert } from "chai";
3 import { assert } from "chai";
4 import css = require("@implab/djx/css!my,css");
4 import css = require("@implab/djx/css!my.css");
5 import {} from "@implab/djx/i18n";
6
5
7 test("simple", (ok, fail, log) => {
6 test("simple", (ok, fail, log) => {
8 setTimeout(() => {
7 setTimeout(() => {
@@ -1,7 +1,6
1 {
1 {
2 "extends": "../tsconfig",
2 "extends": "../tsconfig",
3 "compilerOptions": {
3 "compilerOptions": {
4 "baseUrl": ".",
5 //"rootDir": "ts",
4 //"rootDir": "ts",
6 "rootDirs": [
5 "rootDirs": [
7 "ts",
6 "ts",
@@ -9,10 +8,6
9 "../main/ts",
8 "../main/ts",
10 "../main/typings"
9 "../main/typings"
11 ],
10 ],
12 "paths": {
11 "types": ["requirejs", "../main/typings", "dojo-typings"]
13 "@implab/djx" : ["../main/ts", "../main/typings"],
14 "@implab/djx/*" : ["../main/ts/*", "../main/typings/*" ]
15 },
16 "types": ["requirejs", "../main/typings"]
17 }
12 }
18 } No newline at end of file
13 }
@@ -6,7 +6,7
6 "types": [],
6 "types": [],
7 "experimentalDecorators": true,
7 "experimentalDecorators": true,
8 "jsxFactory": "createElement",
8 "jsxFactory": "createElement",
9 //"skipLibCheck": true,
9 "skipLibCheck": true,
10 "jsx": "react",
10 "jsx": "react",
11 "lib": ["es5", "es2015.promise", "es2015.symbol", "es2015.iterable", "dom", "scripthost"]
11 "lib": ["es5", "es2015.promise", "es2015.symbol", "es2015.iterable", "dom", "scripthost"]
12 }
12 }
General Comments 0
You need to be logged in to leave comments. Login now