// 使用 `export` 关键字将名为 `openType` 的变量作为模块的导出项，使得其他模块能够引入并使用它。
// `openType` 被赋值为通过 `Behavior` 函数创建的一个行为对象，在微信小程序的开发框架中，行为对象可供组件引入，以复用其中定义好的属性、方法等内容，从而扩展组件的功能。
export const openType = Behavior({
    // `properties` 属性用于定义该行为对象所关联组件能够接收的外部属性，也就是组件对外暴露的可配置项，外部在使用组件时可以传入相应的值来设定组件的相关特性。
    properties: {
        // `openType` 属性，其值被限定为字符串类型（`String`），外部使用组件时需传入符合字符串格式的数据，该属性通常用于指定某种开放类型相关的设置，具体含义会依据微信小程序不同的开放能力场景而定。
        openType: String
    },
    // `methods` 属性用于定义行为对象中包含的一系列方法，这些方法可以被引入该行为的组件所调用，用于实现特定的业务逻辑以及与外部的交互操作。
    methods: {
        // 定义名为 `bindGetUserInfo` 的方法，它接收一个 `event` 参数，该参数通常包含了微信小程序触发对应事件时传递过来的相关信息。
        // 此方法的作用是，当触发获取用户信息的相关事件时，通过 `this.$emit` 向外（可能是组件的父组件等监听者）触发一个名为 `getuserinfo` 的自定义事件，并将 `event.detail`（即包含用户信息详情的数据）作为参数传递出去，方便外部进行相应的处理，比如获取到用户信息后进行展示或者存储等操作。
        bindGetUserInfo(event) {
            this.$emit('getuserinfo', event.detail);
        },
        // 定义名为 `bindContact` 的方法，同样接收 `event` 参数，当触发与联系人相关的事件时，通过 `this.$emit` 向外触发名为 `contact` 的自定义事件，并传递 `event.detail`（包含联系人相关详细信息的数据），使得外部可以处理联系人相关的业务逻辑，例如更新联系人列表等操作。
        bindContact(event) {
            this.$emit('contact', event.detail);
        },
        // 定义名为 `bindGetPhoneNumber` 的方法，接收 `event` 参数，在触发获取手机号码相关事件时，使用 `this.$emit` 向外触发 `getphonenumber` 自定义事件，同时将 `event.detail`（包含手机号码相关信息的数据）传递出去，便于外部获取并使用该手机号码信息，比如进行验证或者存储等处理。
        bindGetPhoneNumber(event) {
            this.$emit('getphonenumber', event.detail);
        },
        // 定义名为 `bindError` 的方法，接收 `event` 参数，当出现错误相关的事件触发时，通过 `this.$emit` 向外触发 `error` 自定义事件，将 `event.detail`（包含错误详细信息的数据）传递出去，方便外部根据错误信息进行相应的错误处理，例如提示用户或者记录日志等操作。
        bindError(event) {
            this.$emit('error', event.detail);
        },
        // 定义名为 `bindLaunchApp` 的方法，接收 `event` 参数，在触发启动应用相关的事件时，利用 `this.$emit` 向外触发 `launchapp` 自定义事件，把 `event.detail`（包含启动应用相关详细信息的数据）传递出去，使得外部可以根据启动情况做后续处理，比如判断启动是否成功等操作。
        bindLaunchApp(event) {
            this.$emit('launchapp', event.detail);
        },
        // 定义名为 `bindOpenSetting` 的方法，接收 `event` 参数，当触发打开设置相关的事件时，通过 `this.$emit` 向外触发 `opensetting` 自定义事件，同时传递 `event.detail`（包含打开设置相关详细信息的数据），方便外部知晓设置页面的打开情况以及进行相应的后续操作，例如判断用户是否进行了相关设置调整等操作。
        bindOpenSetting(event) {
            this.$emit('opensetting', event.detail);
        }
    }
});