8

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

<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の例では、「+」ボタンを押しても古い値(フェードしている値)はこれ以上変更されないことを期待しています。

4

1 に答える 1

4

jQueryで複製されたhtml要素をfadeOutできます: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;
                    });
                });
            }
        }
    };
})
于 2012-08-09T18:18:14.967 に答える