mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-17 21:01:34 +08:00
default item content added + fixes
This commit is contained in:
@ -11,6 +11,7 @@ import stackLayoutModule = require("ui/layouts/stack-layout");
|
||||
import builder = require("ui/builder");
|
||||
import utils = require("utils/utils");
|
||||
import platform = require("platform");
|
||||
import labelModule = require("ui/label");
|
||||
|
||||
var ITEMS = "items";
|
||||
var ITEMTEMPLATE = "itemTemplate";
|
||||
@ -101,6 +102,7 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
|
||||
|
||||
public refresh() {
|
||||
this.isDirty = true;
|
||||
|
||||
this._createChildren();
|
||||
}
|
||||
|
||||
@ -110,6 +112,13 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
|
||||
this._createChildren();
|
||||
}
|
||||
|
||||
public onUnloaded() {
|
||||
|
||||
|
||||
|
||||
super.onUnloaded();
|
||||
}
|
||||
|
||||
public _onItemsPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
if (data.oldValue instanceof observable.Observable) {
|
||||
weakEvents.removeWeakEventListener(data.oldValue, observableArray.ObservableArray.changeEvent, this._onItemsChanged, this);
|
||||
@ -119,6 +128,14 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
|
||||
weakEvents.addWeakEventListener(data.newValue, observableArray.ObservableArray.changeEvent, this._onItemsChanged, this);
|
||||
}
|
||||
|
||||
if (types.isUndefined(this.itemsLayout)) {
|
||||
this.itemsLayout = new stackLayoutModule.StackLayout();
|
||||
}
|
||||
|
||||
if (this.itemsLayout.parent !== this) {
|
||||
this._addView(this.itemsLayout);
|
||||
}
|
||||
|
||||
this.refresh();
|
||||
}
|
||||
|
||||
@ -128,22 +145,13 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
|
||||
|
||||
private _createChildren() {
|
||||
if (this.isDirty && this.isLoaded) {
|
||||
if (types.isDefined(this.items) && types.isNumber(this.items.length)) {
|
||||
|
||||
if (types.isUndefined(this.itemsLayout)) {
|
||||
this.itemsLayout = new stackLayoutModule.StackLayout();
|
||||
}
|
||||
|
||||
if (this.itemsLayout.parent !== this) {
|
||||
this._addView(this.itemsLayout);
|
||||
}
|
||||
|
||||
clearItemsLayout(this.itemsLayout);
|
||||
|
||||
if (!types.isNullOrUndefined(this.items) && types.isNumber(this.items.length)) {
|
||||
var i: number;
|
||||
for (i = 0; i < this.items.length; i++) {
|
||||
var viewToAdd = builder.parse(this.itemTemplate, this);
|
||||
if (types.isDefined(viewToAdd)) {
|
||||
var viewToAdd = !types.isNullOrUndefined(this.itemTemplate) ? builder.parse(this.itemTemplate, this) : this._getDefaultItemContent(i);
|
||||
if (!types.isNullOrUndefined(viewToAdd)) {
|
||||
this.itemsLayout.addChild(viewToAdd);
|
||||
viewToAdd.bindingContext = this._getDataItem(i);
|
||||
}
|
||||
@ -153,6 +161,15 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
|
||||
}
|
||||
}
|
||||
|
||||
public _getDefaultItemContent(index: number): viewModule.View {
|
||||
var lbl = new labelModule.Label();
|
||||
lbl.bind({
|
||||
targetProperty: "text",
|
||||
sourceProperty: "$value"
|
||||
});
|
||||
return lbl;
|
||||
}
|
||||
|
||||
private _getDataItem(index: number): any {
|
||||
return this.items.getItem ? this.items.getItem(index) : this.items[index];
|
||||
}
|
||||
@ -198,11 +215,16 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
|
||||
}
|
||||
|
||||
function clearItemsLayout(itemsLayout: layoutModule.Layout) {
|
||||
if (!types.isNullOrUndefined(itemsLayout)) {
|
||||
var i: number = itemsLayout.getChildrenCount();
|
||||
if (i > 0) {
|
||||
while (i >= 0) {
|
||||
itemsLayout.removeChild(itemsLayout.getChildAt(i));
|
||||
var child = itemsLayout.getChildAt(i);
|
||||
if (!types.isNullOrUndefined(child)) {
|
||||
itemsLayout.removeChild(child);
|
||||
}
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user