我有以下问题:
我正在构建一个自我声明的应用程序,它需要注册一个ButtonCtrl,但实例化的对象需要引用Angular之外的外部对象。我需要将该实例的一些属性传递给控制器的$ scope。
angular.module('myApp').controller("ButtonCtrl", ['$scope', function ($scope) {
var myExternalInstance = [WHERE TO GET THIS];
$scope.testProp = myExternalInstance.test;
}]);
我不知道如何在控制器实例化时添加此属性。
答案 0 :(得分:0)
如果你所有的JS代码都在同一个闭包中,那么获取它是没有问题的:
(function(){
//assuming we have some jQuery/javascript code here:
var toBePassedToAngular = "Pass this string to angular";
//and this is our angular code
angular.module('myApp').controller("ButtonCtrl", ['$scope', function ($scope) {
//access the variable just like normal js code
var myExternalInstance = toBePassedToAngular;
$scope.testProp = myExternalInstance;
}]);
})();
和{{testProp}}
将评估为Pass string to angular
但是请注意,只有在实例化控制器时才会获得实例。 Angular不知道您是否对toBePassedToAngular
进行了更改。为了不断观察toBePassedToAngular
发生的变化并处理它的变化,这是另一个全新的故事。