4

angularjs を使用して、入力のプレースホルダーをそのモデルにバインドすると、ドキュメントが IE に読み込まれたときに変更イベントが発生します。これは正しくないようで、他のブラウザーではこの動作は見られません。

JSフィドル

HTML:

<div ng-app="angularjs-starter" data-ng-controller="MainCtrl">
<div data-ui-view="viewMain">
    <input 
    placeholder="{{theValue}}" 
    data-ng-model="theValue" 
    data-ng-change="valueChanged(theValue)" />            
</div>

Javascript:

var app = angular.module('angularjs-starter', []);
app.controller('MainCtrl', function($scope) {  
    $scope.valueChanged = function(theValue) {
        alert("Value Change Called On Load in IE.");
    };
});
4

2 に答える 2

7

これが古いことは知っていますが、他の誰かがこれに遭遇した場合に備えて、動的な値をプレースホルダーに入れ、代わりに変更時に割り当てる小さなディレクティブを作成しました。

.directive('dynamicPlaceholder',
    function() {
        return {                
            restrict: 'A',
            link: function ($scope, element, attrs) {
                attrs.$observe('dynamicPlaceholder', function(value) {
                    element.attr('placeholder', value);
                });
            }
        };
    });

次に、これを使用するには、次dynamic-placeholderの代わりに使用するだけですplaceholder

<input ng-model='someValue' dynamic-placeholder='{{someDynamicPlaceholder}}' />

ただし、IEで何が問題を引き起こしているのかわかりません

于 2013-10-17T17:51:24.487 に答える