将 angular 路由器 ui 与 trNgGrid 问题一起使用

using angular router ui with trNgGrid issues

我一直在开发一个相当大的应用程序,并且开始比以前更深入地研究 AngularJS。我以前做过的大部分事情都非常简单(图片库、导航等),而且我从来没有使用过多个控制器、模块和插件。

现在我有两个插件(Angular UI Router 和 trNgGrid)我想一起使用,但它们似乎不能很好地协同工作。

我正在使用 trNGrid 的页面是一个内部页面。我有一个搜索功能,应该 return 一个 JSON 文件,我需要获取数据并将其放入带有一些基本网格控件的 table 中。

我有一个主模板(索引),然后我使用带 UI 路由器的部分模板为各个页面动态插入 HTML。

搜索页面 html 如下所示:

搜索结果
<div ng-controller="MainCtrl">
    <table tr-ng-grid items='myItems'>

    </table>
</div>

然后我在同一个 app.js 文件中同时拥有 UI 路由器和 trNgGrid 模块:

var routerApp = angular.module('routerApp', ['ui.router']);

routerApp.config(function($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise('/home');

    $stateProvider
        .state('home', {
            url: '/home',
            templateUrl: 'global/partials/home.html'
        })
        .state('search', {
            url: '/search',
            templateUrl: 'search/partials/search.html'
        })
});


angular.module('routerApp', ['trNgGrid'])
    .controller("MainCtrl", ["$scope", function ($scope) {
        $scope.myItems = [{name: "Moroni", age: 50},
                 {name: "Tiancum", age: 43},
                 {name: "Jacob", age: 27},
                 {name: "Nephi", age: 29},
                 {name: "Enos", age: 99}];
        }]); 

当您点击搜索页面时,没有任何反应,似乎一切都崩溃了。没有控制台警告,什么都没有。把trNgGrid模块拿出来,一切正常

我确实有引导应用程序的 ng-app 指令,我已经检查以确保我没有 404 错误,并且所有脚本都已就位并且它们都在 index.html页。

我应该将 trNgGrid 模块放在一个单独的文件中吗?这将是一个很大的应用程序,因此在不同的文件中有大量不同的模块似乎是一个临时解决方案,以后会让我头疼。

现在,我只是想让这两个一起工作。如果有另一种更容易使用的替代方案,我会同意的。

我相信您正在用这一行覆盖您的模块:

angular.module('routerApp', ['trNgGrid'])

尝试这样做:

var routerApp = angular.module('routerApp', ['ui.router', 'trNgGrid']);

routerApp.config(function($stateProvider, $urlRouterProvider) {

$urlRouterProvider.otherwise('/home');

$stateProvider
    .state('home', {
        url: '/home',
        templateUrl: 'global/partials/home.html'
    })
    .state('search', {
        url: '/search',
        templateUrl: 'search/partials/search.html'
    })
});


routerApp.controller("MainCtrl", ["$scope", function ($scope) {
    $scope.myItems = [{name: "Moroni", age: 50},
             {name: "Tiancum", age: 43},
             {name: "Jacob", age: 27},
             {name: "Nephi", age: 29},
             {name: "Enos", age: 99}];
    }]);