Angular $scope变量在更新时中断
Angular $scope variable breaking on update
在我的菜单控制器中,我有一个保存菜单的函数。美元的范围。菜单变量保存表示我的菜单数据的对象。saveMenu函数向REST API端点发送一个Ajax调用,然后作为响应接收更新后的菜单。问题是,当我赋值$scope时。菜单,以响应HTML模板中的所有数据绑定。突然间,所有的菜单数据都消失了。
控制器代码。
$scope.saveMenu = function() {
var menu = $scope.createJsonMenuRequest();
var method = "PUT";
var url = FoodUrls.foodAPI + "menus/" + menu.id;
var req = {
method: method,
url: url,
headers: {
"Content-Type": "application/json"
},
data: angular.toJson(menu)
};
$http(req).success(function(data) {
$scope.menu = $.extend(true, {}, data);
});
};
createJsonMenuRequest函数简单地遍历菜单,并从副本中删除API不喜欢的一些属性。
为什么绑定到HTML模板中断?
在成功函数的赋值语句之前,$作用域。菜单看起来像这样。
{
name: "My Menu",
sections: [
{ $$hashKey: "object:17", id: 1, name: "blarg"}
]
}
之后是这样的…
{
name: "My Menu",
sections: [
{ id: 1, name: "blarg-edited"}
]
}
会丢失$$hashKeys,因为Angular在最初创建菜单时就把它放进去了。不知道这有什么意义
我不建议对angular $作用域的任何属性使用jQuery的扩展函数。$scope是一个复杂的对象,有很多指向特定属性的指针等等。我建议使用angular。合并,因为它应该在不破坏作用域的情况下更好地正确合并对象。
https://docs.angularjs.org/api/ng/function/angular.merge我还不能评论,所以我就把这个放在这里。
调试到什么程度了?
我会看$scope。菜单,然后在你的成功方法中再次更新。
你的数据/模板是什么样子的?
只是为了我自己的好奇,为什么深$。扩展吗?可能是完全有效的,我只是从来没有这样使用过。
看到你的更新,$hashkey不应该是一个问题,如果你不想要它,你angular.copy(data)或简单地把跟踪by在你的ng-repeat:
data-ng-repeat="item in menuItems track by $index"
相关文章:
- Javascript循环不会自我更新
- 添加文字和评论功能更新Div
- AngularJS:ng之后,重复$scope值未按预期更新
- 如何通过数组更新角度子范围
- Ajax聊天消息重复而不仅仅是更新
- 通过CSV文件上载更新数据库表
- 平均值:无法将数据更新到数据库
- $rootScope未使用forEach进行更新
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- Angular:更新一次性绑定的数据
- 当通过Ajax成功回调更新可观察数组时,启用绑定中断
- ASP.Net 将脚本添加到脚本管理器时,更新进度中断
- Ember js - 更新其他表后,有许多关系中断
- Chrome WebRTC在浏览器更新时中断适配器.js
- KO ObservableArray 更新在与 .sort 绑定时中断
- 在不中断页面的情况下,使用数据有效地重复更新DOM
- 是否有任何方法来识别在mongoose/mongoDB中更新/中断
- 更新 ui-bootstrap 版本后,日期选择器验证中断
- Angular $scope变量在更新时中断