Skip to content

Instantly share code, notes, and snippets.

@naranjja
Last active April 23, 2018 14:11
Show Gist options
  • Save naranjja/ee1cea6468347c9cc6adffc3631994ce to your computer and use it in GitHub Desktop.
Save naranjja/ee1cea6468347c9cc6adffc3631994ce to your computer and use it in GitHub Desktop.
Access databound properties in NativeScript
const observable = require("data/observable")
exports.onLoaded = (args) => {
const page = args.object
// basically an observable constructor
const user = new observable.fromObject({
name: "Jose Naranjo",
year: 1992,
month: 11,
day: 26,
genders: ["Female", "Male", "Other"],
gender: 1, // index of selected gender
calcAge: function (year, month, day) {
const birthDate = new Date(year, month, day)
const now = Date.now()
const diff = Math.abs(now - birthDate) / 1000 / 31536000
return diff.toFixed(2)
}
})
page.bindingContext = user
}
exports.onTap = (args) => {
const page = args.object
const user = page.bindingContext
console.log(`Title: ${user.title}`)
console.log(`Birthday: ${user.day}/${user.month}/${user.year}`)
console.log(`Age: ${user.calcAge(user.year, user.month, user.day)}`)
console.log(`Gender: ${user.genders[user.gender]}`)
}
<Page xmlns="http://www.nativescript.org/tns.xsd" loaded="onLoaded" navigatedTo="onNavigatedTo">
<StackLayout>
<Label text="{{ name + '\'s Profile' }}"></Label>
<TextField class="header" text="{{ name }}"></TextField>
<Label text="{{ 'Age: ' + calcAge(year, month, day) + ' years old' }}"></Label>
<DatePicker year="{{ year }}" month="{{ month }}" day="{{ day }}"></DatePicker>
<Label text="Gender: "></Label>
<ListPicker items="{{ genders }}" selectedIndex="{{ gender }}"></ListPicker>
<Button tap="onTap" text="Done"></Button>
</StackLayout>
</Page>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment