迁移到angularJS 1.7.8会破坏工厂和ng-repeats

时间:2019-03-30 18:26:50

标签: angularjs

我有一个用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>来实现路由器功能

提前感谢您的帮助

0 个答案:

没有答案