javascript - AngularJS 从点击调用函数

标签 javascript html angularjs scope

我这辈子都想不通为什么我不能在我的 Controller 中调用这个函数。

单击 accordion-group 属性时出现此错误:
未捕获的 ReferenceError:未定义 getConversationsForUser

这是 html:

<ui-view id="smtConvoCard" layout="column" layout-fill layout-padding>
    <div layout="row" flex layout-align="center center">
        <md-card flex-gt-sm="90" onresize="resize()" flex-gt-md="80">
            <md-card-content>
                <md-list>
                    <h2>Conversations</h2>
                    <accordion close-others="oneAtATime">
                        <accordion-group heading="{{contact.FirstName}} {{contact.LastName}}" ng-repeat="contact in contacts" onclick="getConversationsForUser(contact.UserUID)">
                            <div>Test</div>
                        </accordion-group>
                    </accordion>
                </md-list>
            </md-card-content>
        </md-card>
    </div>
</ui-view>

这里是正在使用的 Controller (部分代码):

controller('convCtrl', ['$scope', 'messageFactory', function ($scope, messageFactory) {
        var currentUser = helpers.storage.get('UID');
        $scope.contacts = [];

        $scope.getContacts = function () {
            /*Does stuff*/
        };

        //This is the function it is trying to call
        $scope.getConversationsForUser = function (userUID) {
            /*Does stuff*/
        };

        //Setup
        $scope.getContacts();
    }]);

我已经尝试将 onclick 更改为不同的元素,而是调用 getContacts 函数,但我总是得到 Uncaught ReferenceError

我知道该函数在我的范围内,因为我正在将 contacts 变量数据绑定(bind)到页面。

最佳答案

尝试:

<accordion-group heading="{{contact.FirstName}} {{contact.LastName}}" ng-repeat="contact in contacts" ng-click="getConversationsForUser(contact.UserUID)">
    <div>Test</div>
</accordion-group>

并且不要忘记在包装您的 accordion 的元素中插入 ng-controller="convCtrl"

更新

我添加一点解释: Controller MySuperController 中的 $scope 必须通过添加到标记(= DOM 元素),这样您的 $scope 变量将代表此 Controller 中的任何变量。

一旦您创建了一个附加到该范围的函数 ($scope.myFunction = function () {/* ... */}),您就可以调用它,即,当一个事件被触发。这是通过 ng-click 指令实现的,该指令将事件处理程序附加到将其设置为属性的元素。

关于javascript - AngularJS 从点击调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30813257/

相关文章:

javascript - 使表单 submit() 表现得像 location.replace()

javascript - 无法访问@font-face 中提到的字体文件

javascript - 导出 2 个不同的 HOC

javascript - 防止在 HTML 中选择

javascript - 单击具有固定标题的 anchor 时设置偏移量

Java HtmlUnit 网页抓取器 newPage 不可访问

javascript - Angular.JS onclick 函数只在第一次点击时调用

javascript - AngularJS:检索存储在 $templateCache 中的 Videogular 模板结果 404 错误

javascript - 如何退出 HTML 中的 javascript/node.js

javascript - Angular 组件路由器从 URL 中删除 #