在jsFiddle中,为什么我必须单击两次才能更改指令中的文本?

时间:2013-08-29 20:23:08

标签: angularjs angularjs-directive jsfiddle plunker

我在jsFiddle中有相同的指令示例,在plnkr中有另一个指令。在jsFiddle中,我必须单击文本两次以更改文本,而在plnkr中它的工作方式与预期的一样。如果这是预期的行为或只是小提琴中的错误,有人可以指出它。

http://jsfiddle.net/z6bfC/

http://plnkr.co/edit/2Z1u2PzbRzPYzjPv4miG?p=preview

HTML:

<div ng-app="testModule">
    <div ng-controller="MyCtrl">
        <div>{{test}}
            <br/>
            <test-directive class="width" bindme="test" style="color: red;">Click Me Twice!!</test-directive>
        </div>
    </div>
</div>

指令/控制器:

angular.module('testModule', []).directive('testDirective', function () {
    return {
        restrict: 'E',
        scope: {
            bindme: "="
        },
        link: function (scope, element, attr) {

            element.bind('click', function () {
                scope.bindme = "Changed";
                if (!scope.$$phase) {
                    console.log(scope.bindme);
                    scope.$apply();
                } else {
                    console.log("Something");
                }
            });

        }
    };
}).
controller('MyCtrl', function ($scope) {
    $scope.test = "Some string";       
});

谢谢!

1 个答案:

答案 0 :(得分:1)

似乎AngularJS 1.1.0做了一些时髦的东西。

尝试1.1.1。 http://code.angularjs.org/1.1.1/angular.min.js