AngularJS在模板函数中访问绑定

时间:2017-02-24 15:43:08

标签: angularjs binding scope controller components

我创建了一个用于呈现基本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 个答案:

答案 0 :(得分:0)

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