单击

时间:2015-06-12 22:47:55

标签: javascript html angularjs scope

我不能为我的生活弄清楚为什么我不能在我的控制器中调用这个功能。

点击accordion-group属性后,我收到此错误:
Uncaught ReferenceError: getConversationsForUser is not defined

这是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('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变量绑定到页面的数据。

1 个答案:

答案 0 :(得分:1)

尝试:

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

不要忘记在包裹ng-controller="convCtrl"的元素中插入accordion

<强>更新

我添加了一些解释:控制器MySuperController中的$ scope必须通过添加到标记(= DOM元素)的ng-controller="MySuperController"属性在DOM中链接,以便您的$ scope变量将表示此控制器中的任何变量。

只要创建附加到此范围($scope.myFunction = function () { /* ... */ })的函数,就可以调用它,即触发事件时。通过ng-click指令就是这种情况,该指令将事件处理程序附加到作为属性设置的元素。