更新#1:在我评论过的修复之后,现在我的应用程序启动了,但是除了它的边界框和过滤器按钮和弹出窗口之外,没有渲染网格。然而,我从控制台没有收到任何错误,并且就我可以使用调试器到达的情况而言,我可以看到从服务器获取的数据是正常的。如果我使用 Batarang,我可以看到与我的模型相对应的范围,并正确填充了项目。我相应地更新了可下载的复制解决方案。谁能解释为什么 ng-grid 没有在这里更新?
我开始使用 ng-grid 和 TypeScript,一旦我的测试应用程序启动,我就会发现问题。有关完整测试解决方案的链接,请参阅本文底部。当然,即使在这几个文件中,我也犯了很多错误,但我希望有一些东西可以开始并逐步了解更多信息。
MVC 应用程序有两个客户端应用程序:
app.js 用于默认视图(主页/索引)。这里没有打字稿,整个代码都包含在这个单个文件中。该代码源自 ng-grid 文档中的分页示例,并试图保持尽可能简单。
MyApp.js 用于另一个视图(主页/模型)中更真实的示例。此示例使用服务、模型和控制器,其 JS 代码是从 TypeScript 编译的。为了简单起见,我只是将这些组件存储在 Scripts/App 下的 Controllers、Models 和 Services 文件夹中,每个文件只包含一个类或接口。生成的 JS 文件手动包含在视图中。
app.js 可以工作,只是它有过滤问题。我在这里发布了这些内容: 使用 ng-grid 进行服务器端过滤:绑定问题?
MyApp.js 有 ng-grid 的启动问题。应用程序一启动,就会在网格绑定中抛出一个 TypeError:
TypeError: Cannot set property 'gridDim' of undefined
at ngGridDirectives.directive.ngGridDirective.compile.pre (http://localhost:55203/Scripts/ng-grid-2.0.7.js:2708:37)
at nodeLinkFn (http://localhost:55203/Scripts/angular.js:4392:13)
at compositeLinkFn (http://localhost:55203/Scripts/angular.js:4015:15)
at nodeLinkFn (http://localhost:55203/Scripts/angular.js:4400:24)
at compositeLinkFn (http://localhost:55203/Scripts/angular.js:4015:15)
at publicLinkFn (http://localhost:55203/Scripts/angular.js:3920:30)
at resumeBootstrapInternal (http://localhost:55203/Scripts/angular.js:983:27)
at Object.$get.Scope.$eval (http://localhost:55203/Scripts/angular.js:8057:28)
at Object.$get.Scope.$apply (http://localhost:55203/Scripts/angular.js:8137:23)
at resumeBootstrapInternal (http://localhost:55203/Scripts/angular.js:981:15) <div ng-grid="gridOptions" style="height: 400px" class="ng-scope"> angular.js:5754
我通过谷歌搜索发现的唯一类似问题是https://github.com/angular-ui/ng-grid/issues/60,但它似乎与我的情况无关,因为网格选项设置得太晚了。
服务器端只有一个 API RESTful 控制器返回服务器分页、排序和过滤的项目。
您可以在此处找到完整的复制解决方案(只需保存、解压缩和打开;所有依赖项均来自 NuGet);有关更多信息,请参阅 readme.txt 文件:
只需启动应用程序并单击右上角的 MODEL 即可运行抛出错误的 TypeScript 应用程序。整个应用由 1 个控制器、1 个服务和 1 个模型组成。
对于像我这样的初学者来说,有一个像这样的简单工作示例会很好。有人可以帮忙吗?