Javascript IE 8中带有AngularJS的未知运行时错误
我已经编写了一个简单的基于AngularJS的HTML。它有一个预定义的项目数组,并提供了Javascript IE 8中带有AngularJS的未知运行时错误,javascript,angularjs,internet-explorer-8,Javascript,Angularjs,Internet Explorer 8,我已经编写了一个简单的基于AngularJS的HTML。它有一个预定义的项目数组,并提供了添加和删除按钮,用于从列表中添加或删除项目删除按钮是一个自定义指令。下面是代码示例:(是一个自定义指令) <p> <label>Price</label> <input type="text" ng-model="price" /> </p> <p> <button clas
添加
和删除
按钮,用于从列表中添加或删除项目<代码>删除按钮是一个自定义指令。下面是代码示例:(
是一个自定义指令)
<p>
<label>Price</label> <input type="text" ng-model="price" />
</p>
<p>
<button class="btn btn-success" ng-click="addItems()">Add</button>
</p>
<table class="table table-striped table-hover">
<th>Item Name</th>
<th>Item Price</th>
<th>Action</th>
<tr ng-repeat="item in items|filter:name|orderBy:predicate">
<td>{{item.name}}</td>
<td>{{item.price | currency}}</td>
<td><delete-button>Remove</delete-button></td>
</tr>
</table>
HTML
<p>
<label>Price</label> <input type="text" ng-model="price" />
</p>
<p>
<button class="btn btn-success" ng-click="addItems()">Add</button>
</p>
<table class="table table-striped table-hover">
<th>Item Name</th>
<th>Item Price</th>
<th>Action</th>
<tr ng-repeat="item in items|filter:name|orderBy:predicate">
<td>{{item.name}}</td>
<td>{{item.price | currency}}</td>
<td><delete-button>Remove</delete-button></td>
</tr>
</table>
项目
<p>
<label>Price</label> <input type="text" ng-model="price" />
</p>
<p>
<button class="btn btn-success" ng-click="addItems()">Add</button>
</p>
<table class="table table-striped table-hover">
<th>Item Name</th>
<th>Item Price</th>
<th>Action</th>
<tr ng-repeat="item in items|filter:name|orderBy:predicate">
<td>{{item.name}}</td>
<td>{{item.price | currency}}</td>
<td><delete-button>Remove</delete-button></td>
</tr>
</table>
价格
<p>
<label>Price</label> <input type="text" ng-model="price" />
</p>
<p>
<button class="btn btn-success" ng-click="addItems()">Add</button>
</p>
<table class="table table-striped table-hover">
<th>Item Name</th>
<th>Item Price</th>
<th>Action</th>
<tr ng-repeat="item in items|filter:name|orderBy:predicate">
<td>{{item.name}}</td>
<td>{{item.price | currency}}</td>
<td><delete-button>Remove</delete-button></td>
</tr>
</table>
添加
<p>
<label>Price</label> <input type="text" ng-model="price" />
</p>
<p>
<button class="btn btn-success" ng-click="addItems()">Add</button>
</p>
<table class="table table-striped table-hover">
<th>Item Name</th>
<th>Item Price</th>
<th>Action</th>
<tr ng-repeat="item in items|filter:name|orderBy:predicate">
<td>{{item.name}}</td>
<td>{{item.price | currency}}</td>
<td><delete-button>Remove</delete-button></td>
</tr>
</table>
项目名称
项目价格
行动
{{item.name}
{{item.price | currency}}
去除
Javascript
<p>
<label>Price</label> <input type="text" ng-model="price" />
</p>
<p>
<button class="btn btn-success" ng-click="addItems()">Add</button>
</p>
<table class="table table-striped table-hover">
<th>Item Name</th>
<th>Item Price</th>
<th>Action</th>
<tr ng-repeat="item in items|filter:name|orderBy:predicate">
<td>{{item.name}}</td>
<td>{{item.price | currency}}</td>
<td><delete-button>Remove</delete-button></td>
</tr>
</table>
$scope.addItems = function() {
$scope.start();
var newItem = {name: $scope.name , price: $scope.price};
$scope.items.push(newItem);
$scope.complete();
};
myModule.directive("deleteButton", function() {
return {
restrict: "E",
transclude: true,
template: "<button class='btn btn-warning' ng-click='removeItem(item)' ng-transclude></button>"
};
});
$scope.addItems=function(){
$scope.start();
var newItem={name:$scope.name,price:$scope.price};
$scope.items.push(newItem);
$scope.complete();
};
指令(“deleteButton”,function()){
返回{
限制:“E”,
是的,
模板:“”
};
});
该代码在Chrome和Firfox上运行良好,但当我尝试在IE 8上运行时,它在控制台中给出了
“Error:Unknown Runtime Error”
。没有其他日志。IE 8似乎无法处理自定义指令。删除自定义指令后,代码运行正常。声明对于自定义元素指令,我们需要调用document.createElement('custom-element')
您应该阅读以下内容。
<p>
<label>Price</label> <input type="text" ng-model="price" />
</p>
<p>
<button class="btn btn-success" ng-click="addItems()">Add</button>
</p>
<table class="table table-striped table-hover">
<th>Item Name</th>
<th>Item Price</th>
<th>Action</th>
<tr ng-repeat="item in items|filter:name|orderBy:predicate">
<td>{{item.name}}</td>
<td>{{item.price | currency}}</td>
<td><delete-button>Remove</delete-button></td>
</tr>
</table>
但代码的问题可能是您将指令限制为一个元素,在IE8中,您不能这样做,而是使用Attribute
<p>
<label>Price</label> <input type="text" ng-model="price" />
</p>
<p>
<button class="btn btn-success" ng-click="addItems()">Add</button>
</p>
<table class="table table-striped table-hover">
<th>Item Name</th>
<th>Item Price</th>
<th>Action</th>
<tr ng-repeat="item in items|filter:name|orderBy:predicate">
<td>{{item.name}}</td>
<td>{{item.price | currency}}</td>
<td><delete-button>Remove</delete-button></td>
</tr>
</table>
myModule.directive("deleteButton", function() {
return {
restrict: "A",
transclude: true,
template: "<button class='btn btn-warning' ng-click='removeItem(item)' ng-transclude></button>"
};
});
myModule.directive(“deleteButton”,function()){
返回{
限制:“A”,
是的,
模板:“”
};
});