2012-07-31 22 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> 

我的真實情況是在這裏:http://jsfiddle.net/5JZPH/10/
在的jsfiddle例子中,我想到的是,舊的價值觀念(這是正在消退)不發生任何變化,當我按下「+」按鈕。

+1

什麼是小提琴的預期/期望行爲? – btford 2012-07-31 23:35:08

+0

所以如果你刪除ng-model屬性它不會失去關聯? – 2012-08-01 18:47:10

+0

不,它不工作:( – 2012-08-01 22:15:47

回答

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; 
        }); 
       }); 
      } 
     } 
    }; 
}) 
相關問題