Javascript IE 8中带有AngularJS的未知运行时错误

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

我已经编写了一个简单的基于AngularJS的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>
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”,
是的,
模板:“”
};
});