首页 > 解决方案 > 扩展中继器(或其他具有嵌套 XML 标记属性的小部件)

问题描述

我尝试扩展中继器。这样做:

// views/widgets/MyRepeater/MyRepeater.ts
import {Repeater} from "tns-core-modules/ui/repeater";

export class MyRepeater extends Repeater {}

现在我尝试使用它:

<Page xmlns="http://schemas.nativescript.org/tns.xsd"
      xmlns:Test="views/widgets/MyRepeater/MyRepeater">
    <Test:MyRepeater items="{{ items }}">
        <Test:MyRepeater.itemsLayout>
            <StackLayout/>
        </Test:MyRepeater.itemsLayout>
        <Test:MyRepeater.itemTemplate>
            <Label text="{{ someBindingValue }}"></Label>
        </Test:MyRepeater.itemTemplate>
    </Test:MyRepeater>
</Page>

在第一次更改<ObservableArray>items. 我收到这样的错误:

JS: TypeError: Cannot set property 'bindingContext' of undefined
JS:     at MyRepeater.Repeater.refresh (file:///data/data/com.test/files/app/tns_modules/tns-core-modules/ui/repeater/repeater.js:48:38)
JS:     at MyRepeater.Repeater._requestRefresh (file:///data/data/com.test/files/app/tns_modules/tns-core-modules/ui/repeater/repeater.js:34:18)
JS:     at MyRepeater.Repeater._onItemsChanged (file:///data/data/com.test/files/app/tns_modules/tns-core-modules/ui/repeater/repeater.js:54:14)
JS:     at Object.handler [as callback] (file:///data/data/com.test/files/app/tns_modules/tns-core-modules/ui/core/weak-event-listener/weak-event-listener.js:30:34)
JS:     at Observable.notify (file:///data/data/com.test/files/app/tns_modules/tns-core-modules/data/observable/observable.js:110:23)
JS:     at ObservableArray.splice (file:///data/data/com.test/files/app/tns_modules/tns-core-modules/data/observable-array/observable-array.js:129:14)

看起来就像在代码中tns-core-modules/ui/repeater/repeater.js:48:38它尝试 parse itemTemplate,但不能那样做。

我做错了什么?

标签: nativescript

解决方案


您需要像这样重新导出所有tns-core-modules/ui/repeater内容: export * from 'tns-core-modules/ui/repeater'


推荐阅读