AngularJS ng-src不会在$ rootScope上使用$ watch进行更新

时间:2016-05-10 08:16:12

标签: javascript angularjs angularjs-scope angularjs-rootscope

我正在使用$ rootScope来获取和更新头像。现在,当用户更新新的头像时,其中的 ng-src 也应该更新,显示刚刚上传的新头像。

我通过在我的控制器中观察 $ rootScope.myAvatar 然后将$ scope.myAvatar设置为newValue来实现这一点。不幸的是,在这种情况下,ng-src没有更新。我已经阅读了很多关于ng-src和null值问题的问题,但这只是$ scope中的一个变化,我不明白为什么更新$ scope.myAvatar不会导致更改ng-src。我试过手动调用$ scope。$ apply(),它不起作用,因为$ rootScope仍在消化。

router.js:

DataTemplate

控制器为ctrl:

<ListView.ItemTemplate>
    <DataTemplate>
        <Grid>
            <StackPanel Orientation="Horizontal">
                <TextBlock FontSize="20"
                           Text="ID"
                           Visibility="Collapsed" />
                <TextBlock Margin="0,0,0,0"
                           FontSize="20"
                           FontWeight="SemiBold"
                           Text="{Binding word}" />
                <TextBlock Margin="30,0,0,0"
                           FontSize="20"
                           Text="{Binding translation}" />
            </StackPanel>
            <Line Height="5" Stroke="#FFE6E6E6" />
        </Grid>
    </DataTemplate>
</ListView.ItemTemplate>

和html:

...
.when('/account', {
            'templateUrl': 'components/account/account.tpl.html',
            'controller': 'accountCtrl as ctrl',
            'auth': true,
            'reloadOnSearch': false
        })
...

1 个答案:

答案 0 :(得分:-1)

我认为您的路由器配置错误。请尝试以下方法:

...
.when('/account', {
    'templateUrl': 'components/account/account.tpl.html',
    'controller': 'accountCtrl',
    'controllerAs': 'ctrl'
    'auth': true,
    'reloadOnSearch': false
})
...