我遇到麻煩更新列表。起初,我通過從$ http.get請求獲取信息來填充我的列表。後來我在文本框中輸入了一些內容,然後嘗試使用$ http.post請求的響應更新列表。雙向綁定似乎不起作用。列表不會自動更新
我確實收到回覆,並且收到了數據。當我覆蓋$ scope中的變量時,列表不會更新。
我的代碼如下所示:
'use strict';
angular.module('myApp.friends', ['ngRoute'])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/friends', {
templateUrl: 'friends/friends.html',
controller: 'FriendsCtrl'
});
}])
.controller('FriendsCtrl', function ($scope, $http, $timeout, UserService) {
$scope.items = [];
$scope.formSearchData = {};
UserService.getAll().then(function(data) {
var remoteItems = data;
for (var i = 0; i < remoteItems.length; i++) {
var object = {};
object.name = remoteItems[i].name;
object.id = remoteItems[i]._id;
$scope.items.push(object);
}
});
$scope.itemClick = function(value) {
console.dir(value);
};
$scope.submitForm = function() {
//debugger;
$scope.items[0].name = "John D";
UserService.getSearchResult($scope.formSearchData).then(function(data) {
getSearchResult(data);
});
};
function getSearchResult(data) {
var remoteItems = data.records;
$scope.items = [];
for (var i = 0; i < remoteItems.length; i++) {
var object = {};
object.name = remoteItems[i].name;
object.id = remoteItems[i].id;
$scope.items.push(object);
}
}
})
.controller('navigationcontroller', function ($scope, $location) {
$scope.isActive = function(viewLocation) {
return viewLocation = $location.path();
}
});
<div class="panel panel-title">
<div class="panel-body">
<div class="friend-search" ng-controller="FriendsCtrl">
<form ng-submit="submitForm()">
<input type="search" name="search" placeholder="Zoek vrienden" class="form-control" ng-model="formSearchData.search">
</form>
</div>
</div>
</div>
<div class="panel panel-title">
<div class="panel-default">
<div class="scrollable-content" ui-scroll-bottom='bottomReached()' ng-controller="FriendsCtrl">
<div class="list-group">
<a ng-repeat="item in items" ng-model="items" class="list-group-item" ng-click="itemClick(item)">
{{ item.name }}
</a>
</div>
</div>
</div>
</div>
的UserService是一個工廠,有兩個功能,一個是GET請求,一個用於POST請求。它看起來像這樣:
angular.module('myApp').factory('UserService', function($http) {
return {
getAll: function() {
return $http.get('http://localhost:3030/user/all').then(function(response) {
return response.data;
});
},
getSearchResult: function(query) {
return $http.post('http://localhost:3030/user/search', query, { 'Content-Type': 'application/json' }).then(function(response) {
return response.data;
});
}
};
});
我看了一些關於$範圍被淘汰的範圍,並嘗試使用$ scope.apply解決它()或$範圍$消化,但我得到。錯誤,當我嘗試。此外,我試圖在html中添加跟蹤,但這似乎也不起作用。
正如你所看到的,我也嘗試硬編碼更新列表,這似乎也沒有工作。
我對Angular很陌生,現在這讓我很忙。我希望有一個人可以幫助我。對我的代碼的任何建議也歡迎;)。謝謝!
您的片段不工作的原因角沒有定義,請修復 – SoluableNonagon
多個控制器不共享範圍,見下面回答。 – SoluableNonagon