控制器不工作

时间:2014-10-18 14:08:16

标签: angularjs angularjs-controller

我正在尝试遵循最佳做法并切换到ControllerAs。在这种情况下,我使用ui-router连接控制器。我有一个SPA有两个视图,一个工作正常,但另一个没有。

在我的HTML中,我引用的是main.resto。*元素,但也有{{main.test}}。没有显示。

奇怪的是,我可以在以下情况下显示元素:

  • 我删除了$watch个功能(为简洁起见,并未在下面显示所有功能);或
  • 我在视图模板中的父div上使用了ng-controller属性(见下文)。

奇怪的是,最后3个分配导致控制器中也使用此数据的正确行为。当我通过开发工具跟进进度时,一切似乎都会执行。 (如果我在最后添加$scope.$apply(),则会抱怨摘要已经在进行中。)

任何人都可以看到错误,并解释为何如此不一致吗?

.controller 'RestoCtrl', ($scope, $stateParams, $location, Restos, Dictionary) ->

    main = this
    $scope.data = Restos.data
    main.test = "hello World"
    main.data = Restos.data
    main.areas = Dictionary.areas

    # Wait for ajax loaded data
    $scope.$watch 'data.restos', () ->
        if Restos.data.restos.length
            if $stateParams.qname
                return setResto $stateParams.qname if Restos.data.restos.length

    setResto = (qname) ->
        tmp = Restos.data.restos.filter (r) ->
            return r.qname == qname
        main.resto = tmp[0]

        main.data.pageTitle = "Review: " + main.resto.rname
        main.data.headTitle       = main.resto.rname + ": " + main.cuisine + " restaurant review by Amsterdam Foodie"
        main.data.metaDescription = main.resto.rname+": "   + main.resto.comment

请注意,如果我在视图中的div上添加Controller(如下所示),那么它确实有效(但我无法更新导航栏使用的数据)。

<div ng-include="'components/navbar/navbar.html'"></div>

<div class="container" itemscope itemtype='http://schema.org/Restaurant' ng-controller="RestoCtrl as main">

1 个答案:

答案 0 :(得分:1)

我是那个添加了评论的人。

基本上你需要return main作为控制器的最后一行。 真的很抱歉,但我不知道原因。