我有一个ng-repeat循环,与ng-switch和ng-bind结合使用(我认为ng-switch不是问题所在。)
<div ng-repeat="message in messages track by message.id">
<div ng-switch="message.yesno">
<div ng-switch-when="true">
text 1
</div>
<div class="click-me" element_id = "{{message.id}}" ng-switch-when="false" ng-bind="message.texts[message.active_text]">
</div>
</div>
</div>
消息被定义为具有以下结构的对象数组:
{
id: int,
yesno: boolean,
texts: array, // containing N strings
active_text: int // index of the current displayed string
}
除了一个setter方法(在返回对象的同一个函数内,假设这个函数是对象构造函数)
this.setNextText = function(){
this.active_text= (++this.active_text)%(this.texts.length);
}
当消息对象的yesno属性为false时,用户可以单击文本并将其更改为下一个可用文本(然后在到达数组bonduary时返回到原始文本)。
因此,当用户点击文本时,会触发以下事件:
$(document).on("click",".click-me",function(){
var message_id = $(this).getAttribute("element_id");
$.grep($scope.messages, function(e){ return e.id == message_id; })[0].setNextText(); // obj containing the message
});
基本上:
这样,nd-bind应该绑定 message.texts 中可用的下一个文本。 但是,它没有。
我很确定:
另外,我试图使用:
$scope.apply();
但我甚至得到一个错误(通常是有效的):
未捕获的TypeError:$ scope.apply不是函数
有任何线索吗?