У меня есть следующий контроллер, и я могу использовать ng-repeat для отображения объекта ONE json, который у меня есть. Я просто использовал ng-repeat, чтобы убедиться, что данные действительно натолкнулись. Но я не могу понять, как связать свои поля ввода, чтобы отображать данные внутри текстовых полей в этом окне/шаблоне редактирования.Угловая ng-модель, не связанная с полями ввода
Контроллер
angular
.module("renderIndex", ["ngRoute","ngCookies"])
.config(config)
.controller("favoritesController", favoritesController)
.controller("newFavoriteController", newFavoriteController)
.controller("editFavoriteController", editFavoriteController);
function config($routeProvider) {
$routeProvider
//...left out for brevity
.when("/editfavorite/:searchId", {
templateUrl: "/ng-js/ng-templates/editFavoriteView.html",
controller: "editFavoriteController",
controllerAs: "vm"
})
.otherwise({ redirectTo: "/" });
};
//...left out for brevity
function editFavoriteController($http, $window, $routeParams) {
var vm = this;
vm.search = [];
var url = "/api/favorites/" + $routeParams.searchId;
$http.get(url)
.success(function (result) {
vm.search = result;
})
.error(function() {
alert('error/failed');
})
.then(function() {
//Nothing
});
};
контроллер работает, он принимает параметр с идентификатором и который используется, и пришитым к концу апите конечную точку URL. Я возвращаю хороший ответ, который является одним объектом json, я могу передать это на вид, используя vm.search
, и если вы заметили внизу представления, у меня есть ng-repeat
(который есть только там, потому что я хотел убедиться, что некоторые данные действительно поступали по проводам, и это так. Конечно, это только повторяет одну запись, потому что это страница редактирования, но она работает, но мои привязанные входы не отображают ничего в текстовых полях, когда отображается рендеринг. быть что-то простое, может кто-нибудь помочь?
EditView/Угловая шаблона
<div class="small-12 column"><h3>Edit Search</h3></div>
<div class="small-12 column">
<form name="editFavoriteForm" novalidate ng-submit="vm.update()">
<input name="userId" type="hidden" ng-model="search.userId" />
<label for="name">Name</label>
<input name="name" type="text" ng-model="vm.search.name" />
<label for="description">Description</label>
<textarea name="description" rows="5" cols="30"
ng-model="vm.search.description"></textarea>
<input type="submit" class="tiny button radius" value="Save" /> |
<a href="#/" class="tiny button radius">Cancel</a>
</form>
</div>
<div data-ng-repeat="s in vm.search">
<p>{{s.name}} - {{s.userId}}</p>
</div>
Так просто, чтобы подтвердить .... Dat a отправляется в vm.search
, и это одна запись базы данных, которую я ожидаю, я знаю, потому что она отображается, когда я использую ng-repeat
. Но когда я использую ng-model='vm.search.name'
, я не получаю данные, привязанные к полю, чтобы я мог его редактировать. Может ли кто-нибудь указать, что я делаю неправильно?
Как вы можете видеть ниже, я ввел некоторые тестовые данные и перешел на страницу редактирования этого элемента, name = asdf & userId = fec87a96-22d7-4e8c-8991-fa01df60c5c0. Каковы оба ожидаемых значения, но ничего не отображается в ограниченных текстовых полях с использованием той же модели vm.search.
Похож на 'vm.search' - массив, поэтому вы не можете привязываться к свойствам типа' vm.search.name'. Самый простой правильный пример: «ng-model =» vm.search [0] .name »' – Phil
Есть ли что-то на стороне контроллера, я мог бы отличить его от объекта вместо пустого массива? Пример такого типа: 'vm.search = {};' –
Я открыт для любых предложений, мой контроллер построен единственным способом, которым я знаю, но если я что-то делаю неправильно, я его изменю, что такое стандартный синтаксис в контроллере для чего-то подобного? –