angularjs中directive的ng-click为什么不能传递参数

首先定义一个directive:

app.directive('conversation', [function() {
    return {
        restrict: 'E',
        templateUrl: 'conversation.html?date' + new Date().getTime(),
        replace: true,
        scope:{
            conversations:"=",
            changeConversation: "&"
        },
        link:function(scope, element, attributes){

        }
    };
}]);

调用

<conversation conversations="conversations" change-conversation="changeConversation(conversation)"></conversation>

<ul class="mdui-list">
    <li class="mdui-list-item mdui-ripple" ng-repeat="conversation in conversations" ng-click="changeConversation(conversation)">
        <div class="mdui-list-item-avatar">
            <img ng-src="{{conversation.chatThumbLogo}}"/>
        </div>
        <div class="mdui-list-item-content">
            <div class="mdui-list-item-title">{{conversation.chatName}}</div>
            <!--<div class="mdui-list-item-text mdui-list-item-one-line">hello world</div>-->
            <span class="im_badge" ng-bind="conversation.unreadCount" ng-if="conversation.unreadCount > 0"></span>
        </div>
    </li>
    <li class="mdui-divider-inset mdui-m-y-0"></li>
</ul>

ng-click触发函数后不能打印conversation,undefined。

 $scope.changeConversation = function (conversation) {
        console.log(conversation);
    }
阅读 3.7k
3 个回答
$scope.changeConversation = function (conversation);

这里是parent的scope,你parent的scope里并没有conversation这个变量。

我也觉着是@熊丸子说的那样,conversation这个变量不是父级的

新手上路,请多包涵

conversation 这个directive restrict: 'E', 是element ,你没有在template中引用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进