2012-07-31 4 views
8

実行時にモデルとビューの間のリンクを解除することが可能かどうかは疑問です。
次の例では、すべてがリンクされています(テキストモデルを使用)。ボタンをクリックすると、最後の入力をもう更新しないように角度を付けることができます(たとえば、いくつかのjqueryエフェクトを開始するなど)。angularJS:モデルとビューのリンクを解除する方法

<html ng-app> 
    <head> 
    <script src="angular-1.0.1.js"></script> 
    </head> 
    <body> 
    <input ng-model="text"/><br/> 
    <input ng-model="text"/><br/> 
    <input ng-model="text"/><input type="button" value="<- break!" ng-click="???"/><br/> 
    </body> 
</html> 

私の本当の場合はここにある:私は「+」ボタンを押すと、古い値が(フェージングされ、これらが)、それ以上変更しないことを期待しjsfiddle例でhttp://jsfiddle.net/5JZPH/10/

+1

フィドルの予想/望ましい行動は何ですか? – btford

+0

ng-model属性を削除しても、関連付けは失われませんか? –

+0

いいえ、動作しません:( –

答えて

4

あなたはjQueryのクローニングhtml要素をフェードアウトすることができますhttp://jsfiddle.net/5JZPH/29/

HTML:

<div ng-app="test"> 
    <input type="button" value=" + " ng-click="index = index + 1"/> 
    <input ng-model="index" smooth="index" style="display:block"/> 
    [{{index}}] 
</div> 

はJavaScript:

angular.module('test', []) 
.directive('smooth', function() { 
    return { 
     transclude: 'element', 
     priority: 750, 
     terminal: true, 
     compile: function(element, attr, linker) { 
      return function(scope, iterStartElement, attr) { 

       var prevClone = null; 

       scope.$watch(attr.smooth, function() { 

        var newScope = scope; 

        linker(newScope, function(clone) { 

         if (prevClone) { 

          newPrevClone = prevClone.clone(); 
          prevClone.after(newPrevClone); 
          prevClone.remove(); 
          newPrevClone.fadeOut(2000, function() { $(this).remove() }); 
         } 

         iterStartElement.after(clone); 

         prevClone = clone; 
        }); 
       }); 
      } 
     } 
    }; 
}) 
関連する問題