问题描述
我试图学习Angular。 这是我想做的事情:
我正在构建一个向我展示城市的应用程序。 当我单击一个城市时,我想查看所有我喜欢的城市的列表。
可以通过ng-click使用“显示列表”按钮,但是需要按下该按钮。
这是我的自动完成方法:
我希望DOM列表在更改列表时自动更新。
$scope.$watch('updatedList', function() {
// CHECK IF WORKS
console.log($scope.updatedList);
// APPLY TO DOM
$timeout(function(){
$scope.$apply(function () {
$scope.watchList = $scope.updatedList;
});
}, 1000)
});
控制台未显示任何错误,并给出了正确的值:
对象{city.3:“ Herat”,city.7:“ Haag”,city.10:“ Tilburg” ...}
在我的div中是以下内容:
<ul>
<li ng-repeat="y in updatedList">{{ y }}</li>
</ul>
<ul>
<li ng-repeat="a in watchList">{{ a }}</li>
</ul>
首先是NG-Click-Version(可在点击时使用),其次是$ scope。$ watch
很抱歉有很多问题,但是我真的在Angular-Docs上挣扎。
编辑:
将城市添加到列表的功能:
$scope.addToList = function(name,id) {
var cityToAdd = name;
var cityToAddID = id;
// ADD A CITY TO THE COOKIE -> WORKS
$cookies.put('city.' + cityToAddID, cityToAdd);
$scope.newList = $cookies.getAll();
$scope.addToListMessage = cityToAdd + " wurde hinzugefügt";
// Show short INFONOTICE
window.setTimeout(function() {
$scope.$apply(function() {
$scope.addToListMessage = "";
});
}, 1000);
// Update the List
$scope.updateList();
};
第二个功能->从Cookies中获取值并将其放入数组中:
$scope.updateList = function() {
var allCitys = $cookies.getAll();
// PUT ALL INTO AN ARRAY -> WORKS
var favouritesFromCookie = [];
$.each(allCitys, function(index, value) {
if (index.indexOf('city.') == 0) { favouritesFromCookie.push(value) }
});
// PUT THE ARRAY OF CITYS INTO A SCOPE_VARIABLE
$scope.updatedList = favouritesFromCookie;
};
1楼
您的$ scope.updatedList必须是要在ng-repeat中使用的数组。
2楼
您不应该直接在表达式中编写列表。 尝试这个
<ul>
<li ng-repeat="y in watchList">{{ y.city }}</li>
<li ng-repeat="y in watchList">{{ y.yourListItem}}</li>
</ul>