0

我有一个 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 时,用户可以单击文本并将其更改为下一个可用文本(然后在到达数组绑定时返回原始文本)。

因此,当用户点击文本时,会触发以下事件:

    $(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
    });

基本上:

  • 获取点击消息的索引(对应于当前 ng-repeat 循环的索引)
  • 增加它

这样,nd-bind 应该绑定message.texts中可用的下一个文本。然而,事实并非如此。

我很确定:

  • ng-bind: 设置正确(message.texts 的第一个元素打印正确)
  • message.active_text 已正确更新

另外,我尝试使用:

 $scope.apply();

但我什至得到一个错误(通常它有效):

未捕获的类型错误:$scope.apply 不是函数

有什么线索吗?

4

0 回答 0