我正在尝试遵循最佳做法并切换到ControllerAs。在这种情况下,我使用ui-router连接控制器。我有一个SPA有两个视图,一个工作正常,但另一个没有。
在我的HTML中,我引用的是main.resto。*元素,但也有{{main.test}}
。没有显示。
奇怪的是,我可以在以下情况下显示元素:
$watch
个功能(为简洁起见,并未在下面显示所有功能);或奇怪的是,最后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">
答案 0 :(得分:1)
我是那个添加了评论的人。
基本上你需要return main
作为控制器的最后一行。
真的很抱歉,但我不知道原因。