AngularJS指令 - 从模型属性填充ng-click

时间:2015-06-16 17:46:07

标签: javascript angularjs angularjs-directive

我遇到了一个问题,我似乎无法使我的ng-click事件识别与其中一个属性相关联的函数。这是我的代码:

服务:

factory.getContextMenuItems = function(message) {
    var items = [];
    var href;

    href = '#';
    items.push({
        href: href,
        iconClass: "sentIcon",
        hasIcon: true,
        clickEvent: navigationFactory.navigate(message)
    });
    return items;
}

主视图 - 与此视图关联的控制器调用上述工厂来获取数据:

<div id="readMessage" class="readMessage" data-ng-model="model.message" role="region" aria-label="Message Content" aria-live="polite">
    <div class="senderContextArea" data-webuser-context-menu 
    data-menu-items="model.message.contextMenu" 
    data-from-name="{{model.message.from}}" 
    data-ng-if="model.message.contextMenu.length > 0"></div>
</div>

指令模板:

<ul class="contextMenu" role="menu">
    <li data-ng-repeat="item in menuItems">
        <a href="{{item.href}}" title="{{item.title}}" role="menuitem" target="_blank" data-ng-click="{{item.clickEvent}}">
            <span data-ng-if="item.hasIcon" class="{{item.iconClass}}"></span> {{item.text}}
        </a>
    </li>
</ul>

指令:

(function(app) {
    app.directive('menu', function () {
        return {
            restrict: 'A',
            scope: {menuItems: '=', fromName: '@'},
            templateUrl: '/contextMenu.html'
       }
    });
})(angular.module('app'));

我所有其他属性都正确连接。除了点击事件本身之外我想要的其他所有东西都很好。必须有一个我缺少的步骤。

1 个答案:

答案 0 :(得分:0)

你能尝试使用这样的匿名函数包装你的navigationFactory.navigate(message)

function(){navigationFactory.navigate(message);}

并且在与item.clickEvent()没有{{}}

的情况下进行ng点击交流