1# NodeContent 2<!--Kit: ArkUI--> 3<!--Subsystem: ArkUI--> 4<!--Owner: @xiang-shouxing--> 5<!--Designer: @xiang-shouxing--> 6<!--Tester: @sally__--> 7<!--Adviser: @HelloCrease--> 8 9NodeContent是ArkUI提供的[ContentSlot](./arkui-ts/ts-components-contentSlot.md)的管理器。 10 11> **说明:** 12> 13> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 14 15## 导入模块 16 17```ts 18import { NodeContent } from '@kit.ArkUI'; 19``` 20 21## NodeContent 22 23NodeContent是节点内容的实体封装。 24 25**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 26 27**系统能力:** SystemCapability.ArkUI.ArkUI.Full 28 29### constructor 30 31constructor() 32 33节点内容的实体封装。 34 35**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 36 37**系统能力:** SystemCapability.ArkUI.ArkUI.Full 38 39**示例:** 40 41<!--code_no_check--> 42 43```ts 44import { nativeNode } from 'libNativeNode.so'; // 开发者自己实现的so 45import { NodeContent } from '@kit.ArkUI'; 46 47@Component 48struct Parent { 49 private nodeContent: Content = new NodeContent(); 50 51 aboutToAppear() { 52 // 通过C-API创建节点,并添加到管理器nodeContent上 53 nativeNode.createNativeNode(this.nodeContent); 54 } 55 56 build() { 57 Column() { 58 // 显示nodeContent管理器里存放的Native侧的组件 59 ContentSlot(this.nodeContent) 60 } 61 } 62} 63``` 64 65### addFrameNode<sup>12+</sup> 66 67addFrameNode(node: FrameNode): void 68 69根据参数将FrameNode添加到NodeContent中。 70 71**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 72 73**系统能力:** SystemCapability.ArkUI.ArkUI.Full 74 75**参数:** 76 77| 参数名 | 类型 | 必填 | 说明 | 78| ------- | ------------------------------------------------------ | ---- | ---------------- | 79| node | [FrameNode](./js-apis-arkui-frameNode.md) | 是 | 需要添加的FrameNode。 | 80 81### removeFrameNode<sup>12+</sup> 82 83removeFrameNode(node: FrameNode): void 84 85根据参数将FrameNode从NodeContent中删除。 86 87**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 88 89**系统能力:** SystemCapability.ArkUI.ArkUI.Full 90 91**参数:** 92 93| 参数名 | 类型 | 必填 | 说明 | 94| ------- | ------------------------------------------------------ | ---- | ---------------- | 95| node | [FrameNode](./js-apis-arkui-frameNode.md) | 是 | 需要删除的FrameNode。 | 96 97**示例:** 98 99添加删除NodeContent中的FrameNode节点。 100 101```ts 102// xxx.ets 103import { NodeContent, typeNode } from '@kit.ArkUI'; 104 105class NodeContentCtrl { 106 content: NodeContent; 107 textNode: Array<typeNode.Text> = new Array(); 108 uiContext: UIContext; 109 width: number; 110 111 constructor(uiContext: UIContext) { 112 this.content = new NodeContent(); 113 this.uiContext = uiContext; 114 this.width = Infinity; 115 } 116 117 AddNode() { 118 let node = typeNode.createNode(this.uiContext, "Text"); 119 node.initialize("ContentText:" + this.textNode.length).fontSize(20); 120 this.textNode.push(node); 121 this.content.addFrameNode(node); 122 } 123 124 RemoveNode() { 125 let node = this.textNode.pop(); 126 this.content.removeFrameNode(node); 127 } 128 129 RemoveFront() { 130 let node = this.textNode.shift(); 131 this.content.removeFrameNode(node); 132 } 133 134 GetContent(): NodeContent { 135 return this.content; 136 } 137} 138 139@Entry 140@Component 141struct Index { 142 @State message: string = 'Hello World'; 143 controller = new NodeContentCtrl(this.getUIContext()); 144 145 build() { 146 Row() { 147 Column() { 148 ContentSlot(this.controller.GetContent()) 149 Button("AddToSlot") 150 .onClick(() => { 151 this.controller.AddNode(); 152 }) 153 Button("RemoveBack") 154 .onClick(() => { 155 this.controller.RemoveNode(); 156 }) 157 Button("RemoveFront") 158 .onClick(() => { 159 this.controller.RemoveFront(); 160 }) 161 } 162 .width('100%') 163 } 164 .height('100%') 165 } 166} 167```