使用模态 ng-controller 作为常规控制器
Use a modal ng-controller as a regular controller
我有一个模态视图(使用 angularui)使用的控制器。在某些时候,我想将此控制器与自定义视图(不是模态视图)一起使用。所以一切都很好,除了解析变量(发送到控制器的变量)。
我这样调用模态:
var modalInstance = $modal.open({
templateUrl: 'myModal.html',
controller: 'modalCtrl',
size: 'lg',
resolve: {
variable: function(){
return myVar;
}
}
});
如何从 javascript(或 html)发送变量?
这是我 bootstrap 我的自定义视图 (custom.html) 的方式:
angular.element($(document.body)[0].children[0]).attr('ng-controller','modalCtrl');
angular.bootstrap( document.body, [ 'myApp' ]);
实现此目的的一种方法是定义与您的解析同名的服务或值(在本例中为 variable
)。然后Angular会为你找到依赖并注入。
您可能不想总是定义此 service/value。因此,您可以在模块中定义此 service/value,然后在 bootstrap 应用程序时有条件地加载该模块:
if (someCondition) {
angular.module('use.me.conditionally', []).value('variables', 123);
angular.element($(document.body)[0].children[0]).attr('ng-controller','modalCtrl');
angular.bootstrap(document.body, ['myApp', 'use.me.conditionally']);
} else {
angular.bootstrap(document.body, ['myApp']);
}
编辑:
您可以使用 value()
或 service()
函数来声明具有许多属性的可注入对象:
var foo = { property1: 'abc', property2: 456 };
angular.module('use.me.conditionally',[])
.value('variablesAsAValue', foo)
.service('variablesAsAService', function() { return foo; });
请注意,您不需要同时使用 value()
和 service()
,我只是展示这两种方法。 value()
一般用于常量类型的变量,服务一般是object/classes.
我有一个模态视图(使用 angularui)使用的控制器。在某些时候,我想将此控制器与自定义视图(不是模态视图)一起使用。所以一切都很好,除了解析变量(发送到控制器的变量)。
我这样调用模态:
var modalInstance = $modal.open({
templateUrl: 'myModal.html',
controller: 'modalCtrl',
size: 'lg',
resolve: {
variable: function(){
return myVar;
}
}
});
如何从 javascript(或 html)发送变量?
这是我 bootstrap 我的自定义视图 (custom.html) 的方式:
angular.element($(document.body)[0].children[0]).attr('ng-controller','modalCtrl');
angular.bootstrap( document.body, [ 'myApp' ]);
实现此目的的一种方法是定义与您的解析同名的服务或值(在本例中为 variable
)。然后Angular会为你找到依赖并注入。
您可能不想总是定义此 service/value。因此,您可以在模块中定义此 service/value,然后在 bootstrap 应用程序时有条件地加载该模块:
if (someCondition) {
angular.module('use.me.conditionally', []).value('variables', 123);
angular.element($(document.body)[0].children[0]).attr('ng-controller','modalCtrl');
angular.bootstrap(document.body, ['myApp', 'use.me.conditionally']);
} else {
angular.bootstrap(document.body, ['myApp']);
}
编辑:
您可以使用 value()
或 service()
函数来声明具有许多属性的可注入对象:
var foo = { property1: 'abc', property2: 456 };
angular.module('use.me.conditionally',[])
.value('variablesAsAValue', foo)
.service('variablesAsAService', function() { return foo; });
请注意,您不需要同时使用 value()
和 service()
,我只是展示这两种方法。 value()
一般用于常量类型的变量,服务一般是object/classes.