Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步角度/节点$scope调用_Javascript_Angularjs_Mongodb_Mean Stack - Fatal编程技术网

Javascript 异步角度/节点$scope调用

Javascript 异步角度/节点$scope调用,javascript,angularjs,mongodb,mean-stack,Javascript,Angularjs,Mongodb,Mean Stack,我对Angular很陌生,我有个问题需要帮助。基本上,我需要有一个项目,用户可以点击选择。单击某个项目时,页面需要显示该项目的某些属性,如其描述等。第一部分不是问题,但第二部分显示数据时我遇到了问题。这就是我所拥有的: 在前端,我有一个角度ng clickChooseSitem(item)函数,它将单击的item作为其参数: <div ng-repeat="item in items" class="col-xs-2 col-md-1"> <div ng-click="c

我对Angular很陌生,我有个问题需要帮助。基本上,我需要有一个项目,用户可以点击选择。单击某个项目时,页面需要显示该项目的某些属性,如其描述等。第一部分不是问题,但第二部分显示数据时我遇到了问题。这就是我所拥有的:

在前端,我有一个角度ng click
ChooseSitem(item)
函数,它将单击的
item
作为其参数:

<div ng-repeat="item in items" class="col-xs-2 col-md-1">
   <div ng-click="chooseItem(item)" class="thumbnail">
        <img src="/images/items/{{item.name}}.png"/>
    </div>
</div>
这几乎所有的工作。我可以成功地查询单击项目的数据,但返回它是另一回事。第一次单击时,
$scope.chosenItem
的值为
null
。然后,在第二次单击时,它存储单击项的值。这也会导致这样的问题:如果我单击
n
amountofitems,存储的值总是
n-1
项的值,而不是当前项的值。我需要它在第一次单击时存储单击项的值,而不是第二次

我有一种感觉,我需要在这里的某个地方添加一个回调来让它工作,但我是Angular/JS新手,所以我甚至不确定它应该放在哪里


谢谢你的帮助!此外,任何关于角度设计模式的提示或线索都将不胜感激,因为我觉得这是一个非常简单的东西的可怕实现。

我建议您直接公开该服务:

$scope.serviceItem = items; 
然后你可以在视图中这样调用它:

{{serviceItem.chosenItem}} 
它将始终更新为最新单击的值

我希望有帮助


您好,通常您需要应用更好的命名约定,因为很难遵循代码。这对plunker测试代码也很有帮助。我明白了,做了一些简单的更改。希望它能解决问题。注意
success
不推荐使用,但是如果您在这里使用
then
并实际返回了一个值,那么您可以在控制器中链接另一个
then
items.getChosenItemData(item.name)。然后(函数(returnedValue){$scope.item=returnedValue})
。您正在从服务返回一个承诺,因此您只需要在控制器中进一步链接该承诺。很明显,您总是会得到上一个值,因为当您输入函数chooseItem时,远程调用不会结束,因此您将成为上一个值,并且在开始时为null。(或者也可以参考-您可以查看服务变量,并在更新范围时对其进行更新).@thegio-是的。@thegio我会尝试一下,看看它能给我带来什么,Thanksher是个不折不扣的人,两种解决方案并排工作。@Dan所以它们都等于零,对吧?那么它们都不起作用了?@thegio你的解决方案起作用了!实际上它是两者的混合体。谢谢大家!@tear728不,它们都起作用,它们以零/未定义开始,当你单击按钮,它们都可以工作。建议阅读:
{{serviceItem.chosenItem}}