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 builder = require("ui/builder");
|
||||||
import utils = require("utils/utils");
|
import utils = require("utils/utils");
|
||||||
import platform = require("platform");
|
import platform = require("platform");
|
||||||
|
import labelModule = require("ui/label");
|
||||||
|
|
||||||
var ITEMS = "items";
|
var ITEMS = "items";
|
||||||
var ITEMTEMPLATE = "itemTemplate";
|
var ITEMTEMPLATE = "itemTemplate";
|
||||||
@ -101,6 +102,7 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
|
|||||||
|
|
||||||
public refresh() {
|
public refresh() {
|
||||||
this.isDirty = true;
|
this.isDirty = true;
|
||||||
|
|
||||||
this._createChildren();
|
this._createChildren();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,6 +112,13 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
|
|||||||
this._createChildren();
|
this._createChildren();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public onUnloaded() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
super.onUnloaded();
|
||||||
|
}
|
||||||
|
|
||||||
public _onItemsPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
public _onItemsPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||||
if (data.oldValue instanceof observable.Observable) {
|
if (data.oldValue instanceof observable.Observable) {
|
||||||
weakEvents.removeWeakEventListener(data.oldValue, observableArray.ObservableArray.changeEvent, this._onItemsChanged, this);
|
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);
|
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();
|
this.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,22 +145,13 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
|
|||||||
|
|
||||||
private _createChildren() {
|
private _createChildren() {
|
||||||
if (this.isDirty && this.isLoaded) {
|
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);
|
clearItemsLayout(this.itemsLayout);
|
||||||
|
|
||||||
|
if (!types.isNullOrUndefined(this.items) && types.isNumber(this.items.length)) {
|
||||||
var i: number;
|
var i: number;
|
||||||
for (i = 0; i < this.items.length; i++) {
|
for (i = 0; i < this.items.length; i++) {
|
||||||
var viewToAdd = builder.parse(this.itemTemplate, this);
|
var viewToAdd = !types.isNullOrUndefined(this.itemTemplate) ? builder.parse(this.itemTemplate, this) : this._getDefaultItemContent(i);
|
||||||
if (types.isDefined(viewToAdd)) {
|
if (!types.isNullOrUndefined(viewToAdd)) {
|
||||||
this.itemsLayout.addChild(viewToAdd);
|
this.itemsLayout.addChild(viewToAdd);
|
||||||
viewToAdd.bindingContext = this._getDataItem(i);
|
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 {
|
private _getDataItem(index: number): any {
|
||||||
return this.items.getItem ? this.items.getItem(index) : this.items[index];
|
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) {
|
function clearItemsLayout(itemsLayout: layoutModule.Layout) {
|
||||||
|
if (!types.isNullOrUndefined(itemsLayout)) {
|
||||||
var i: number = itemsLayout.getChildrenCount();
|
var i: number = itemsLayout.getChildrenCount();
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
while (i >= 0) {
|
while (i >= 0) {
|
||||||
itemsLayout.removeChild(itemsLayout.getChildAt(i));
|
var child = itemsLayout.getChildAt(i);
|
||||||
|
if (!types.isNullOrUndefined(child)) {
|
||||||
|
itemsLayout.removeChild(child);
|
||||||
|
}
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user