模板函数中的 AngularJS 访问绑定

Posted

技术标签:

【中文标题】模板函数中的 AngularJS 访问绑定【英文标题】:AngularJS Access bindings in Template Function 【发布时间】:2017-07-15 12:35:12 【问题描述】:

我创建了一个组件来呈现基本的 html,它的唯一目的是在用户点击它时触发一个参数化事件。 由于所有控制器的控制器都完全相同,因此我将基于名为 componentType 的特定参数呈现 HTML。 我关心的是如何获取作为绑定的 componentType。

'use strict'

var app = angular.module('app');
app.component('htmlElement', 
    template: function ($element, $attrs, $log)         
        if ($attrs.componentType === 'link') 
            return '<a href="#" ng-click="$ctrl.fireEvent();"> $ctrl.text </a>';
         else if ($attrs.componentType === 'checkbox') 
            return '<input type="checkbox" ng-click="$ctrl.fireEvent();"> $ctrl.text ';
        
    ,
    bindings: 
        componentType: '<',
        text: '<',
        rowId: '<',
        event: '<'
    ,
    controller: function ($scope) 
        $scope.$ctrl.fireEvent = function () 
            $scope.$emit($scope.$ctrl.event,  rowId: $scope.$ctrl.rowId );
        
    
);

最后下面一行是我如何调用组件:

<html-element ng-if="cell.componentType" component-type="cell.componentType" text="cell.data.text" event="cell.data.event" row-id="cell.data.rowId"></html-element>

问题是 $attrs.componentType 给了我属性值,它是 var 的名称,所以它根本没有帮助我。 有人可以帮我吗?

【问题讨论】:

【参考方案1】:

在 AngularJS 中无法评估属性绑定。见https://github.com/angular/angular.js/issues/7466。

【讨论】:

以上是关于模板函数中的 AngularJS 访问绑定的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS在模板中使用orderBy ng-repeat值的全局变量

AngularJS - 无法在链接函数中动态更改指令模板

第二章:2.1 AngularJS 中的数据绑定

当“@”用于打字稿类组件模板中的事件绑定时,Vetur 未正确读取函数名称

AngularJS:将函数从控制器传递到指令的多种方法

如何从模板脚本访问 AngularJS 变量