Angularjs 设置指令属性的可选属性的默认值

Angularjs 设置指令属性的可选属性的默认值,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个table指令,这个指令在scope上有一个属性,它需要一个config对象。可以配置此配置对象的属性,并且某些属性是可选的。我想要的是,当未设置可选属性时,我将其设置为默认值。这可能吗?如果可能,如何实现?我还想用eventhandlers实现这一点。如果没有设置,我想设置一个默认的eventhandler 到目前为止我试过的是这个。我的指令 appname.directive("table" = function () { var self = this; self

我有一个table指令,这个指令在scope上有一个属性,它需要一个config对象。可以配置此配置对象的属性,并且某些属性是可选的。我想要的是,当未设置可选属性时,我将其设置为默认值。这可能吗?如果可能,如何实现?我还想用eventhandlers实现这一点。如果没有设置,我想设置一个默认的eventhandler

到目前为止我试过的是这个。我的指令

appname.directive("table" = function () {
    var self = this;

    self.setOptionalSettingsIfNotSet = function (config) {
        config.optional = config.optional || true;
    };

    self.configWatcher = function (config) {
        self.setOptionalSettingsIfNotSet(config);

        config.test = function(value){
            alert("test " + value);
        };
    };

    self.controller = function ($scope) {
        $scope.$watch("attrConfig", local.configWatcher);
    };

    return {
        restrict: "A",
        templateUrl: '...',
        scope: {
            attrConfig: "="
        },
        controller: self.controller,
    };
};
我试图检查config属性是否有属性集,如果没有,我想自己设置。我还尝试添加一个eventhandler。我希望在html模板中以类似的方式使用的属性和eventhandler

<button ng-click="config.test('value')">Test button</button>
<span ng-show="config.optional">Test text</span>
测试按钮
测试文本
但这不起作用,测试文本不显示,按钮也不显示警报


有没有办法使这成为可能?我试图创建一个fiddle示例,但由于某些原因,该指令无法工作。

通常这是在对象构造函数中处理的。谢谢,该文档向我明确说明,我必须将配置对象放在作用域中,并将传统事件添加到放在作用域中的对象中。