Angular指令模板css类更改延迟

时间:2016-02-19 07:59:05

标签: javascript angularjs

我的angular指令类的代码片段:

if (currentIndex < newMessages.length) {
  scope.message = newMessages[currentIndex];
} else {
  scope.message = newMessages[0];
}                        

$timeout(function () {
  var msgText = $('#msg-text');
  console.log("xx:" + msgText.attr('class'));
  // has-image no-desc no-desc-remove
});

当我更改scope.message时,angular会刷新模板,$ timeout会确保在使用新元素等更新模板后调用其包含的函数。对吗?

它似乎正在运作,但问题是,我有类似&#34; has-image no-desc no-desc-remove &#34;等课程。后来它改为&#34; has-image&#34;。

我如何捕捉和事件,哪些类完全更新?因为这对我的代码逻辑没有好处。

2 个答案:

答案 0 :(得分:0)

  

我如何捕捉和事件,哪些类完全更新?因为这对我的代码逻辑没有好处。

根据您的代码和要求,您需要知道$scope.message.imageURL$scope.message.Description更新的时刻。对于最基本的方式,您可以使用$scope.$watchGroup()

$ watchGroup的示例。 (这里我把两者的条件都有一些值,你可以按照你想要的方式调整条件)

$scope.$watchGroup(['message.imageURL', 'message.Description'], function (newValues, oldValues){

  // newValues[0] => is => $scope.message.imageURL
  // newValues[1] => is => $scope.message.Description

  // case of both having some value
  if(newValues[0] &&  newValues[1]){
    console.log('things has been changed');
  }
});

答案 1 :(得分:0)

原来我的html中包含了angular-animate.js,它会自动执行“Class和ngClass动画挂钩”。更多https://docs.angularjs.org/guide/animations。使用$ animate.enabled(false,myElement);

在需要的地方禁用它