在实例化时在角度控制器中注入对象引用

时间:2014-10-01 08:21:49

标签: angularjs angularjs-scope

我有以下问题:

我正在构建一个自我声明的应用程序,它需要注册一个ButtonCtrl,但实例化的对象需要引用Angular之外的外部对象。我需要将该实例的一些属性传递给控制器​​的$ scope。

angular.module('myApp').controller("ButtonCtrl", ['$scope', function ($scope) {
    var myExternalInstance = [WHERE TO GET THIS];
    $scope.testProp = myExternalInstance.test;
}]);

我不知道如何在控制器实例化时添加此属性。

1 个答案:

答案 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发生的变化并处理它的变化,这是另一个全新的故事。