mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
feat: new expression parser for xml bindings (#9729)
This commit is contained in:
committed by
Nathan Walker
parent
a518249958
commit
90ceed15d3
@@ -659,17 +659,19 @@ export function test_BindingConverterCalledEvenWithNullValue() {
|
||||
const testPropertyValue = null;
|
||||
const expectedValue = 'collapsed';
|
||||
pageViewModel.set('testProperty', testPropertyValue);
|
||||
appModule.getResources()['converter'] = function (value) {
|
||||
if (value) {
|
||||
return 'visible';
|
||||
} else {
|
||||
return 'collapsed';
|
||||
}
|
||||
appModule.getResources()['converter'] = {
|
||||
toView: function (value) {
|
||||
if (value) {
|
||||
return 'visible';
|
||||
} else {
|
||||
return 'collapsed';
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
const testFunc = function (views: Array<View>) {
|
||||
const testLabel = <Label>views[0];
|
||||
testLabel.bind({ sourceProperty: 'testProperty', targetProperty: 'text', expression: 'testProperty | converter' });
|
||||
testLabel.bind({ sourceProperty: 'testProperty', targetProperty: 'text', expression: 'testProperty | converter()' });
|
||||
|
||||
const page = <Page>views[1];
|
||||
page.bindingContext = pageViewModel;
|
||||
|
||||
@@ -437,15 +437,17 @@ export class ListViewTest extends UITest<ListView> {
|
||||
public test_usingAppLevelConvertersInListViewItems() {
|
||||
var listView = this.testView;
|
||||
|
||||
var dateConverter = function (value, format) {
|
||||
var result = format;
|
||||
var day = value.getDate();
|
||||
result = result.replace('DD', day < 10 ? '0' + day : day);
|
||||
var month = value.getMonth() + 1;
|
||||
result = result.replace('MM', month < 10 ? '0' + month : month);
|
||||
result = result.replace('YYYY', value.getFullYear());
|
||||
var dateConverter = {
|
||||
toView: function (value, format) {
|
||||
var result = format;
|
||||
var day = value.getDate();
|
||||
result = result.replace('DD', day < 10 ? '0' + day : day);
|
||||
var month = value.getMonth() + 1;
|
||||
result = result.replace('MM', month < 10 ? '0' + month : month);
|
||||
result = result.replace('YYYY', value.getFullYear());
|
||||
|
||||
return result;
|
||||
return result;
|
||||
},
|
||||
};
|
||||
|
||||
Application.getResources()['dateConverter'] = dateConverter;
|
||||
@@ -565,10 +567,12 @@ export class ListViewTest extends UITest<ListView> {
|
||||
var listView = this.testView;
|
||||
var converterCalledCounter = 0;
|
||||
|
||||
var testConverter = function (value) {
|
||||
converterCalledCounter++;
|
||||
var testConverter = {
|
||||
toView: function (value) {
|
||||
converterCalledCounter++;
|
||||
|
||||
return value;
|
||||
return value;
|
||||
},
|
||||
};
|
||||
|
||||
Application.getResources()['testConverter'] = testConverter;
|
||||
@@ -578,7 +582,7 @@ export class ListViewTest extends UITest<ListView> {
|
||||
listView.bindingContext = listViewModel;
|
||||
|
||||
listView.bind({ sourceProperty: 'items', targetProperty: 'items' });
|
||||
listView.itemTemplate = '<Label id="testLabel" text="{{ $value, $value | testConverter }}" />';
|
||||
listView.itemTemplate = '<Label id="testLabel" text="{{ $value, $value | testConverter() }}" />';
|
||||
|
||||
this.waitUntilListViewReady();
|
||||
|
||||
@@ -589,10 +593,12 @@ export class ListViewTest extends UITest<ListView> {
|
||||
var listView = this.testView;
|
||||
var converterCalledCounter = 0;
|
||||
|
||||
var testConverter = function (value) {
|
||||
converterCalledCounter++;
|
||||
var testConverter = {
|
||||
toView: function (value) {
|
||||
converterCalledCounter++;
|
||||
|
||||
return value;
|
||||
return value;
|
||||
},
|
||||
};
|
||||
|
||||
Application.getResources()['testConverter'] = testConverter;
|
||||
@@ -602,7 +608,7 @@ export class ListViewTest extends UITest<ListView> {
|
||||
listView.bindingContext = listViewModel;
|
||||
|
||||
listView.bind({ sourceProperty: 'items', targetProperty: 'items' });
|
||||
listView.itemTemplate = '<StackLayout><Label id="testLabel" text="{{ $value, $value | testConverter }}" /></StackLayout>';
|
||||
listView.itemTemplate = '<StackLayout><Label id="testLabel" text="{{ $value, $value | testConverter() }}" /></StackLayout>';
|
||||
|
||||
this.waitUntilListViewReady();
|
||||
|
||||
|
||||
@@ -252,15 +252,17 @@ export function test_splice_observable_array_refreshes_the_Repeater() {
|
||||
export function test_usingAppLevelConvertersInRepeaterItems() {
|
||||
var repeater = new Repeater();
|
||||
|
||||
var dateConverter = function (value, format) {
|
||||
var result = format;
|
||||
var day = value.getDate();
|
||||
result = result.replace('DD', month < 10 ? '0' + day : day);
|
||||
var month = value.getMonth() + 1;
|
||||
result = result.replace('MM', month < 10 ? '0' + month : month);
|
||||
result = result.replace('YYYY', value.getFullYear());
|
||||
var dateConverter = {
|
||||
toView: function (value, format) {
|
||||
var result = format;
|
||||
var day = value.getDate();
|
||||
result = result.replace('DD', month < 10 ? '0' + day : day);
|
||||
var month = value.getMonth() + 1;
|
||||
result = result.replace('MM', month < 10 ? '0' + month : month);
|
||||
result = result.replace('YYYY', value.getFullYear());
|
||||
|
||||
return result;
|
||||
return result;
|
||||
},
|
||||
};
|
||||
|
||||
Application.getResources()['dateConverter'] = dateConverter;
|
||||
@@ -275,7 +277,7 @@ export function test_usingAppLevelConvertersInRepeaterItems() {
|
||||
|
||||
TKUnit.waitUntilReady(() => repeater.isLayoutValid);
|
||||
|
||||
TKUnit.assertEqual(getChildAtText(repeater, 0), dateConverter(new Date(), 'DD.MM.YYYY'), 'element');
|
||||
TKUnit.assertEqual(getChildAtText(repeater, 0), dateConverter.toView(new Date(), 'DD.MM.YYYY'), 'element');
|
||||
}
|
||||
|
||||
helper.buildUIAndRunTest(repeater, testAction);
|
||||
|
||||
Reference in New Issue
Block a user