Sha*_*han 4 angularjs angularjs-directive angularjs-scope
我有一个指令,我在其中添加一个按钮和按钮上的ng单击.我的指令代码是
AppDirectives.directive(
'feed',
function() {
return {
restrict : 'AE',
scope : {
feedMsg : '@feedText',
feedUser : '@feedUser',
feedTimestamp : '@feedTimestamp',
feedLike : '@feedLike',
feedDislike : '@feedDislike',
likeClick: '&',
dislikeClick :'&',
feedUid : '@feedUid'
},
template : '<div class="media">'+
'<a class="pull-left" href="#"><img class="media-object" src="resources/images/holder.png" style="height:64px; width:64px;" alt="img"></a>'+
'<div class="media-body">'+
'<h4 class="media-heading">{{feedUser}}</h4>'+
'<h5>{{feedMsg}}</h5>'+
'<p> <a ng-click="likeClick(feedLike)">Like</a> {{feedLike}} <a ng-click="dislikeClick(feedUid)">Dislike</a> {{feedLike}} {{ feedTimestamp | date:medium }} </p>'+
'</div>'+
'</div>',
replace : true,
};
});
Run Code Online (Sandbox Code Playgroud)
我的HTML代码是
<feed feed-uid={{feed.uid}} feed-text={{feed.feedText}} feed-user={{feed.userUid}} feed-timestamp={{feed.time}} feed-like={{feed.like}} like-click="likeClick(uid)" dislike-click="dislikeClick(uid)" feed-dislike={{feed.dislike}}></feed>
Run Code Online (Sandbox Code Playgroud)
我的控制器有
$scope.dislikeClick = function(feedUid){
console.debug("dislike"+feedUid);
}
Run Code Online (Sandbox Code Playgroud)
当我点击不喜欢按钮,我得到'like undefined',我支持打印'like uid_of_post'.任何人都可以告诉我我的代码有什么问题.当{{feedUid}}在模板中获取正确的值时.
来自$ compile的文档,其中包含指令文档:
通常需要通过表达式将数据从隔离范围传递到父范围,这可以通过将局部变量名称和值的映射传递到表达式包装器fn来完成.例如,如果表达式是increment(amount),那么我们可以通过将localFn称为localFn({amount:22})来指定金额值.
所以在这种情况下你会做ng-click="dislikeClick({uid: feedUid})",然后从你的HTML做dislike-click="dislikeClick(uid)"
我正在回答这个特定于你的用例,但我认为这几乎是同一个问题:AngularJS从指令中获取$ event