AngularJS:如何重新启动控制器以更新要监视的数据源模型
angularjs: how to restart controllers to update the data source model to watch?
如何告诉 Angularjs 停止监视过期的数据对象并强制控制器重新启动以查看新的模型实例?
var ang = angular.module('ang', []);
ang.controller('userCtrl', function($scope) {
$scope.userData = myProject.getUserData(); // an OOP js data tree
}
angular.bootstrap(document, ['ang']);
// ...
myProject.reloadUserData(); // userData now a new instance
Angular 运行良好,直到我销毁用户数据对象以创建新的数据对象实例。
如何告诉 angular 停止查看旧用户数据并开始查看新用户数据?基本上我想重新启动角度或控制器。
无需仅仅因为模型更新而重新启动您的 angular 应用程序。这不仅是迂回的,而且您还必须承受重新编译 DOM 的性能影响。
相反,我建议您创建一个服务来处理同步。
ang.factory('userService', function ($rootScope) {
var userService = {
// We'll initialize this in a moment
data: undefined,
// Method to refresh the data property
refresh: function () {
userService.data = myProject.getUserData();
}
};
userService.refresh();
return userService;
});
现在,在控制器中,您将使用此服务,而不是全局 myProject 对象。
ang.controller('userCtrl', function($scope, userService) {
$scope.user = userService; // Bind to {{user.data}} in your templates
});
最后,每当你调用myProject.reloadUserData()
时,你必须refresh
userService
对象。
$(document.body).injector().invoke(function (userService) {
userService.refresh();
});
您可能只想将其添加到方法中。
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- Datatables:通过DOM数据源中的名称引用列
- 如何将JSON数据源适合Jquery自动完成小部件
- SmartGWT数据源和CORS
- Node.js通过scp监视传入归档的目录
- js,对象's状态监视
- Jasmine单元测试在监视服务方法时失败
- 带有变量的Angular.js数据源
- 在远程数据源调用之前,将筛选器注入数据源
- 多重配置期间的webpack监视选项
- Kendo UI网格:数据源刷新后,我丢失了分页
- 使用angularJs中的数据库数据源刷新下拉列表
- 是否可以在不使用外部后端的情况下编写grafana数据源插件
- AngularJS指令监视父级大小的更改
- 在Firebug控制台中监视javascript命名空间变量
- 从指令链接函数监视控制器作用域
- 如何使用jasmine节点监视依赖模块内部的方法
- 监视JavaScript输出,例如console.log()
- 使用jquery和lodash限制监视的输入
- AngularJS:如何重新启动控制器以更新要监视的数据源模型