闭包中的多个控制器 angularjs.
Multiple controllers in a closure angularjs
>我在闭包中创建了 2 个控制器:
_closure = (function(){
var _One;
var _Two;
//register module- left out for brevity
function ctrlOne($scope){
this.model = {
a : 'a'
b:'b'
}
_One = $scope;
}
function ctrlTwo($scope){
this.model = {
c : 'c'
d:'d'
}
_Two = $scope;
}
//assign controllers to module- left out for brevity
var publicMethods = {
saveAll: function(){
// access both the models in this function.
}
}
})()
我想在我的公共函数中访问模型(因为我目前正在现有框架中改造角度(。我想知道将引用分配给两个控制器的范围是否正确?在这里,我只是保留了一个指向两个$scope(_One和_Two(的指针,然后尝试在 SaveAll 公共方法中访问它们各自的模型。这是正确的方法吗?
这有几个问题,我同意 New Dev 的观点,你应该"尽早放弃这个想法">
1(您在此IIFE中没有返回任何内容,因此_closure
变量将变为undefined
2(在Angular中,$scope
对象是模型,一个新的$scope
被传递到每个控制器函数中。所以你可以有这样的东西:
angular.module('myApp', [])
.controller('ctrlOne', function($scope){
$scope.a = 'a';
$scope.b = 'b';
})
.controller('ctrlTwo', function($scope){
$scope.c = 'c';
$scope.d = 'd';
});
3(我不确定您当前如何将控制器连接到应用程序,所以也许this.model
约定有效,但您通常不会在控制器中使用关键字this
。
4(在_One
和_Two
中保留指向两个$scopes的指针不是正确的方法。与其找到一种方法来维护对该控制器功能之外的特定控制器作用域的访问,不如使用提供程序(服务或工厂(代替公共方法。提供程序保存应用程序的所有业务逻辑,听起来这就是您的公共函数正在做的事情(即 saveAll
(。
用角度改造一些东西可以非常快 - 但前提是你知道你在做什么。Angular真的很混乱,很难上手,除非你非常了解你的工具,否则你会对它们非常笨拙。我建议从ng-newsletter的精彩初学者教程开始
相关文章:
- 修改控制器AngularJS的全局值
- 从控制器Angularjs调用链接函数
- 共享变量和多个控制器AngularJS
- 未定义的控制器AngularJS
- 将模块注入控制器AngularJs
- 使用工厂/服务在控制器AngularJS之间推送数组中的数据
- 如何更新控制器angularjs中的.value
- 调用另一个控制器Angularjs中的控制器
- 如何访问两个控制器AngularJS
- 如何在多个文件中定义控制器 - AngularJs.
- 从父控制器 AngularjS 访问 Popup 控件
- 从同一控制器 Angularjs 中的另一种方法访问$scope变量
- 将数据从服务传递到控制器 AngularJS
- 在控制器 AngularJS 之间共享功能
- 推送通知发送到控制器 Angularjs
- 工厂没有被注入控制器 - angularJS
- 在控制器 AngularJS 之间传递 ID 值
- 闭包中的多个控制器 angularjs.
- 将服务文件中收到的 Rest 数据发送到控制器 angularjs
- 覆盖不同控制器 Angularjs 中的变量