2016-02-12 49 views
0

請考慮以下角度應用自定義指令的工作:雙向數據綁定不會在Internet Explorer 9

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script> 
    <link href="style.css" rel="stylesheet" /> 
    <script src="script.js"></script> 
</head> 

<body ng-app="app"> 

    <div ng-controller="someController as ctrl"> 
    <simple-directive item="ctrl.item" disabled="false"></simple-directive> 
    <pre>{{ctrl.item | json}}</pre> 
</div> 

</body> 

var app = angular.module('app', []); 

app.directive('simpleDirective', function() { 
    return { 
    scope : { 
    item : '=', 
    disabled : '=' 
    }, 
    template : '<input type="text" ng-model="item.value" ng-disabled="disabled" />' 
}; 
}); 

app.controller('someController', function() { 
}); 

在Chrome和Firefox它按預期工作。當我們輸入文本框時,它的值被綁定到屬性ctrl.item.value

在Internet Explorer 9上,雙向數據綁定不起作用。

如果我直接使用文本框,沒有自定義指令,它在所有瀏覽器上按預期工作。

爲什麼它不能在Internet Explorer 9上運行?

Plunkr注意:看來Plunkr本身不會對IE9工作)

回答

1

嘗試使用的data-disabled="false"代替disabled="false"

+0

有關如何以及爲什麼這可能會解決提問者問題的一個小背景將會有所幫助。 – Andrew

1

disabled是一個屬性,舊瀏覽器不保留該屬性的值。

正如你可以在這裏看到:。https://github.com/angular/angular.js/issues/351

「的問題是,舊的瀏覽器不保值,布爾屬性,如禁用這可防止角度編譯器正確地檢索綁定表達式這不是每個人都會說錯,但角度應該有一個很好的答案。「

更改其他內容,例如在禁用ng時禁用數據。