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