我有一个用Angular 1.3.8编写的应用程序,并且运行良好,但是由于不再支持1.3.8,因此ive开始将较早的项目升级到1.7.8,以便将它们发布在LTS上。
似乎已经发生了根本性的变化,因为在移至1.7.8之后,所有工厂和ng重复项都已停止工作。实际上,几乎所有东西都停止了工作。
我所做的第一件事是将.success
的工厂功能更改为.then
,因为.success
在http承诺中已贬值,但是仍然无效。这是一些代码:
app.config(function ($routeProvider) {
$routeProvider
.when('/Equipment_Lighting', {
controller: 'GearController',
templateUrl: './ng/views/Lighting.html'
})
});
app.controller('GearController', function ($scope, LightFactory) {
function init() {
LightFactory.getLights().then(function (data) {
$scope.lights = data;
// console.log(data);
});
}
init();
});
app.factory('LightFactory', function ($http) {
var factory = {};
factory.getLights = function () {
return $http.get('./ng/api/gear/lights.json');
};
return factory;
});
在html模板上:(在路由之外的index.html文件中有一个名为gearsearch
的输入,因此$parent
的作用域是,但是即使删除了该指令,也只是重复执行light in lights
无效)
<table>
<tr ng-repeat="light in $parent.glightsres = (lights | filter: gearsearch)">
<td>{{ light.id }}</td>
<td>{{ light.model }}</td>
<td>{{ light.make }}</td>
<td>{{ light.type }}</td>
<td>{{ light.class }}</td>
<td>{{ light.status }}</td>
<td>{{ light.cost | currency }}</td>
</tr>
</table>
我显然可以接受任何重写方法,但是我只是无法弄清楚问题所在。即使是angularjs.org上的1.7.8文档也表明,这种方式可以在这种配置下工作,$ scope和ng-repeat并不那么困难。
还值得注意的是,当未注释console.log时,我从控制台中正确回显的json文件中获取了数组,但从ui视图内部运行console.log时,控制台中未显示任何内容。也许路由器有问题?
使用
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.7.8/angular-route.js"></script>
来实现路由器功能
提前感谢您的帮助