我在一個非常簡單的聊天應用程序中使用Firebase。我現在正在處理的功能之一是能夠在聊天室中更新消息,但只有當您是原作者時才能更新。對於編輯我有一個圖標,點擊時,將做一些JavaScript來隱藏消息div和顯示一個先前隱藏的具有更新形式的div。但是,如果你是這封郵件的作者,我只希望它可以使用。這裏是代碼的樣子:如何比較AngularJS值與Ruby on Rails變量值
<li class="message phm pvm pull-left" ng-repeat="(msgId,msg) in room.messages">
<div class="message-current" data-message-id="{{msgId}}">
<span class="message-author pull-left">{{msg.author}}</span>
<span class="message-body pull-left pls">{{msg.body}}</span>
<span class="message-timestamp pull-right prs">
{{msg.timestamp | date:'MMM d, yyyy h:mm a'}}
<a class="message-update-link" href="#" ng-click="showMessageUpdate(msgId)"><span class="glyphicon glyphicon-pencil"></span></a>
</span>
</div>
<div class="message-update hidden" data-message-id="{{msgId}}">
<form class="form-inline" ng-submit="updateMessage(roomId, msgId, '<%= current_user.full_name %>')">
<textarea class="form-control update-message" ng-model="msg.body" ng-trim="false">{{msg.body}}</textarea>
<input class="button button-large button-primary" type="submit" value="Update">
</form>
</div>
</li>
現在,我只能得到它具有可更新消息的所有消息或沒有消息。基本上,我堅持的部分是檢查{{msg.author}}
的angularjs值是否等於<%= current_user.id %>
的rails值。有關如何實現這一目標的任何想法?謝謝你的幫助!
求助:
感謝Jiten的正確方向邁出的一步。我是學習AngularJS的新手,它非常複雜。有時你只需要知道從哪裏開始。
我結束了使用ngIf指令和angular.equals函數的組合。在我的Rails視圖中,我只使用ng-if="isAuthor(msg.author, '<%= current_user.full_name %>')"
來處理任何我想要的消息的作者。這將評估isAuthor()的響應,並且只有在評估爲true時才呈現給dom。現在上面的代碼看起來是這樣的:
<li class="message phm pvm pull-left" ng-repeat="(msgId,msg) in room.messages">
<div class="message-current" data-message-id="{{msgId}}">
<span class="message-author pull-left">{{msg.author}}</span>
<span class="message-body pull-left pls">{{msg.body}}</span>
<span class="message-timestamp pull-right prs">
{{msg.timestamp | date:'MMM d, yyyy h:mm a'}}
<a ng-if="isAuthor(msg.author, '<%= current_user.full_name %>')" class="message-update-link" href="#" ng-click="showMessageUpdate(msgId)"><span class="glyphicon glyphicon-pencil"></span></a>
</span>
</div>
<div ng-if="isAuthor(msg.author, '<%= current_user.full_name %>')" class="message-update hidden" data-message-id="{{msgId}}">
<form class="form-inline" ng-submit="updateMessage(roomId, msgId, '<%= current_user.full_name %>')">
<textarea class="form-control update-message" ng-model="msg.body" ng-trim="false">{{msg.body}}</textarea>
<input class="button button-large button-primary" type="submit" value="Update">
</form>
</div>
</li>
這裏是isAuthor()
看起來像我的AngularJS控制器:
$scope.isAuthor = function(msgAuthor, currentUser) {
return angular.equals(msgAuthor, currentUser);
}
漂亮其實很簡單!
在我上面的代碼方面,其中將在該行去? – ryanpitts1
抱歉,我不確定,我也在學習角色。 – jimagic
哈哈,非常感謝您的幫助,儘管......至少讓我指向一個好的方向! – ryanpitts1