来自angularjs新手的问题。
这是一个两部分问题。
我有一个下拉页面(使用网络服务填充),文本框和按钮“Go'”。按钮ng-click导致下拉值和文本框命中一个Web服务,该服务返回JSON,我用它来显示网格(Id,name)。网格还有每行的删除按钮。所有这一切都在一个控制器里面说控制器A.
单击删除按钮时,我打开一个模式http://angular-ui.github.io/bootstrap/,其中包含“是”和“否”按钮。这个模态在一个不同的控制器中说就是controllerB。
Q1。如何在controllerB中获取id(行用户想要删除)的值?我正在使用一个全局var变量,我在controllerA中设置并进入controllerB,但我不认为这是正确的方法吗?
Q2。当用户在模态(controllerB)上单击是时,如何重新加载页面并显示刷新的网格(controllerA) - 如何在controllerB中获取下拉菜单和文本框的值以及如何调用controllerA' s-click在controllerB中的功能?
答案 0 :(得分:3)
Q1:查看this page for an example有关如何将信息传递到模态对话框的信息。基本上,您需要在调用$ modal.open时指定 resolve 属性。
Q2:再次查看示例。在ControllerA中,您可以调用 modalInstance.result.then(...)并提供一个在解除模型对话框时将被调用的函数。在该函数中,您可以进行任何您希望的Web服务调用,并且当Web服务调用返回时,您的success函数可以更新填充数据网格的$ scope数组变量。
答案 1 :(得分:2)
使用AngularJS 工厂或服务来跨不同控制器使用方法。您不应该使用全局变量,您可以考虑使用 $ rootScope 在更广泛的范围内提供服务。
此处的文档:https://docs.angularjs.org/guide/services& https://docs.angularjs.org/api/ng/service/ $ rootScope
重新加载页面的一种方法是在控制器的ng-click上调用重新渲染功能,以便它调用服务器以获取最新信息(如果你还没有函数/最初渲染页面的方法,否则再次在ng-click中调用它来重新渲染),这样就可以在点击上执行多个函数,包括重新渲染。