Skip to content

Angular1.x 中的组件封装

javascript
app.directive('childComponent', function () {
    return {
        restrict: 'EAC',
        templateUrl: 'xxx.html',
        scope: {
            attr: '=',
            attr2: '@?',
            event: '&'
        },
        controller: function () {
            // 非必须的属性 判断为空时赋默认值
            $scope.attr2 = $scope.attr2 || 'circle'


            // 子组件中的点击事件
            $scope.handleTabClick = (key, item, index)=> {
                // 调用父组件传入的事件方法时,要使用对象的方式,和模板中的占位变量名对应
                // 下面的 e 会传到父组件中提供的方法的参数 e 上
                // 很逆天
                $scope.handleChange && $scope.handleChange({e: { key, item, index }})
            }
        }
    }
})
js
scope.handleTabChange = e => {
    console.log('顶部菜单切换.e', e)
}
html
<!-- 标签对应 directive 的第一个参数,小驼峰变短横线 -->
<!-- 使用 = 进行双向绑定的可以直接写变量名 -->
<!-- 事件名也得从小驼峰变成短横线 -->
<child-component tabs="attr" handle-change="handleChange(e)"></child-component>

最后更新于:

评论区
评论区空空如也
发送评论
名字
0 / 20
邮箱
0 / 100
评论内容
0 / 140
由于是非实名评论,所以不提供删除功能。如果你需要删除你发送的评论,或者是其他人的评论对你造成了困扰,请 发邮件给我 。同时评论区会使用 AI + 人工的方式进行审核,以达到合规要求。