Skip to content

Commit 227485b

Browse files
committed
Fix value conversion - don't touch nonstring values.
1 parent da652a5 commit 227485b

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/nativescript-angular/view-util.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,10 @@ export function setProperty(view: NgView, attributeName: string, value: any): vo
161161
}
162162

163163
function convertValue(value: any): any {
164+
if (typeof(value) !== "string" || value === "") {
165+
return value;
166+
}
167+
164168
var valueAsNumber = +value;
165169
if (!isNaN(valueAsNumber)) {
166170
return valueAsNumber;

tests/app/tests/property-sets.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class TestView extends View implements ViewExtensions {
1616
public stringValue: string = "";
1717
public numValue: number = 0;
1818
public boolValue: boolean = undefined;
19+
public anyValue: any = undefined;
1920
}
2021

2122
describe('setting View properties', () => {
@@ -29,6 +30,8 @@ describe('setting View properties', () => {
2930
let view = new TestView();
3031
setProperty(view, "numValue", "42")
3132
assert.strictEqual(42, view.numValue);
33+
setProperty(view, "numValue", 0)
34+
assert.strictEqual(0, view.numValue);
3235
});
3336

3437
it('converts boolean values', () => {
@@ -44,4 +47,25 @@ describe('setting View properties', () => {
4447
setProperty(view, "style", "color: red")
4548
assert.equal(Red, view.style.color.hex);
4649
});
50+
51+
it('doesn\'t convert blank strings', () => {
52+
let view = new TestView();
53+
setProperty(view, "stringValue", "")
54+
assert.strictEqual("", view.stringValue);
55+
});
56+
57+
it('doesn\'t convert booleans', () => {
58+
let view = new TestView();
59+
setProperty(view, "boolValue", true)
60+
assert.strictEqual(true, view.boolValue);
61+
setProperty(view, "boolValue", false)
62+
assert.strictEqual(false, view.boolValue);
63+
});
64+
65+
it('preserves objects', () => {
66+
let value = {name: "Jim", age: 23};
67+
let view = new TestView();
68+
setProperty(view, "anyValue", value)
69+
assert.deepEqual(value, view.anyValue);
70+
});
4771
});

0 commit comments

Comments
 (0)