Javascript 角度视图未更新

Javascript 角度视图未更新,javascript,angularjs,Javascript,Angularjs,我是Angular.js的新手,我想我错过了一些小但重要的东西 为了学习角度,我正在构建这个小面板,将视频源路由到目的地 我有一个源列表和一个目的地列表(每个目的地有2个插槽)。 这些将在稍后从API加载,但目前是在js中定义的 当我选择其中一个源时,“selectedSource”变量将与单击的源一起设置。 当我再次单击目标插槽时,将使用“selectedSource”对象设置该插槽的内容 控制台日志告诉我插槽的thumb url已更新,但我的html不显示更新的图像。我已经把“申请”弄得一团

我是Angular.js的新手,我想我错过了一些小但重要的东西

为了学习角度,我正在构建这个小面板,将视频源路由到目的地

我有一个源列表和一个目的地列表(每个目的地有2个插槽)。 这些将在稍后从API加载,但目前是在js中定义的

当我选择其中一个源时,“selectedSource”变量将与单击的源一起设置。 当我再次单击目标插槽时,将使用“selectedSource”对象设置该插槽的内容

控制台日志告诉我插槽的thumb url已更新,但我的html不显示更新的图像。我已经把“申请”弄得一团糟了,尽管我不认为这是一条路要走

请参见我的简化代码:

HTML:


来源
目的地

(在您告诉我如何使用服务等之前,请记住:这是一个首次尝试的学习项目)

问题是您试图更改
selectSlot()
函数的值参数
slot
,而不是目标的slot数组本身。由于您可以从目的地列表中拥有一个或多个目的地插槽,因此最可能的解决方案是更改
selectSlot()
,以接受插槽的当前目的地数组和要更改的插槽键

只需将此HTML代码从

<div ng-repeat="slot in destination.slots" ng-click="selectSlot(slot)">
查看此项以查看其实际操作


注意:您可以参考关于ng repeat的(键、值)synatx。

这似乎是一个纯JavaScript问题

中选择slot()

此操作实际上没有按预期将
$scope.selectedSource
分配给
$scope.dest1.slot中的一个

您可能希望这样做:

    slot.id = $scope.selectedSource.id;
    slot.thumbUrl = $scope.selectedSource.thumbUrl;
那就行了

但也请注意,在您的情况下,您将
$scope.destinations.dest1.slots
初始化为
$scope.sources
的两个对象,这意味着更改
$scope.dest1.slots
中的插槽也会导致更改
$scope.sources
中相应的插槽。如果正如您所说,目的地“稍后将从API加载”,那么它就可以正常工作。

与提供的答案类似。。。
<div ng-repeat="slot in destination.slots" ng-click="selectSlot(slot)">
<div ng-repeat="(key, slot) in destination.slots" ng-click="selectSlot(destination.slots, key)">
$scope.selectSlot = function(slots, key){
    slots[key] = $scope.selectedSource;

    //reset selected source
    $scope.selectedSource = null;
}
slot = $scope.selectedSource;
    slot.id = $scope.selectedSource.id;
    slot.thumbUrl = $scope.selectedSource.thumbUrl;