如何将变量传递给ng-init调用?

luk*_*szb 2 angularjs

在我的控制器上,我创建了一个负责初始化范围状态的函数.然后它ng-init就像这样被调用:... ng-init="init(value)"where value是全局范围内的一些变量.问题是 - 它不起作用.角度是否允许传递变量?是否ng-init只在没有任何上下文的情况下进行评估,我必须准备一个字符串?

小智 13

我确信这不是"正确"的事情,但它有效并且我使用它.

在窗口上设置一个全局变量..

<script type="text/javascript">
    window.myCtrlData = {\"a\": \"It's a duck!\"};
</script>
Run Code Online (Sandbox Code Playgroud)

..然后使用ng-init将变量的名称传递给控制器​​..

<div ng-controller="MyCtrl" ng-init="init('myCtrlData')">
Run Code Online (Sandbox Code Playgroud)

..然后检索init()内的全局变量

function MyCtrl($scope) {
    $scope.init = function (dataKey) {
        if (dataKey && window[dataKey]) {
            var data = window[dataKey];

            // add data to scope
            angular.extend($scope, data);
        }
    };
}
Run Code Online (Sandbox Code Playgroud)