1

我在哪里可以访问已加载控制器的范围?在为控制器初始化范围后,我喜欢有类似事件的东西,以便为视图预定义模型。

有没有类似的东西$rootScope.$on("$controllerLoaded")

4

2 回答 2

1

您可以在控制器内部通过将值分配给$scope.

function GreetingCtrl($scope) {
    // a simple string
    $scope.greeting = 'Hola!';

    // something more complex
    $scope.myModel = {id:1, name:'bobby'};
}

然后你可以在你的视图中使用它:

<label>{{myModel.name}}</label>

这将在其中呈现一个带有“bobby”的标签(直到您更改模型然后自动动态更新视图)。

最终,您的应用程序将开始使用来自某个描述的服务器存储的真实世界数据,您将需要使用$http$resource来获取该数据。检查每个链接以获取有关如何从这些模块初始化模型的示例。

查看控制器文档以获取更多信息

于 2013-09-18T22:05:41.913 回答
1

不太清楚,但听起来你想要在加载特定控制器后通知应用程序的另一部分。那是对的吗?

如果是这样,您有几个选择。尝试调查$emit. 本质上是向父监听器发送信号。

这是使用$emit&$broadcast

$rootScope.$on('emitName', function(){
    //do what you want
});

另一种选择(更多的黑客)是在控制器的末尾设置一个标志:

$rootScope.controllerLoaded = true

然后,无论您想知道何时完成,只需检查$rootScope.controllerLoaded标志即可。

于 2013-09-18T22:11:11.833 回答