Я начал использовать knockout.js, и мне это очень нравится. Я использую ASP.NET MVC, JQuery и knockout.jsknockou.js получает модель от сопоставления сервера с картографическим плагином и отправкой модели назад
Мой вопрос заключается в следующем: позволяет сказать, что у меня есть экран управления пользователя, пользователь мой взгляд модель внутри пользователя я хочу массив разрешений
мой ViewModel пользователь:
var userViewModelClass = function() {
var self = this;
ko.mapping.fromJS({
ID: "",
permissions: []
}, {}, self);
}
сейчас .. если я делать Ajax запрос на сервер и получить JSON назад я пользователь отображение плагин, и все идет как ожидалось
но ... теперь я хочу, чтобы в моем списке разрешенных прав было такое действие, как удаление. , поэтому мне понадобится объект разрешения, а затем массив разрешений будет массивом объектов разрешений. но как это сделать? как будет отображение плагин знать, что объект возвращается к нему с сервера в массиве фактически на объекте, как этот:
function permission() {
var self = this;
this.delete = function() {
};
ko.mapping.fromJS({
name: "",
level: ""
}, {}, self);
}
, что моя первая часть вопроса. Вторая часть: позволяет сказать, что я получил модель с массивом всех разрешений, и все они являются объектом этого разрешения. теперь я хочу, чтобы каждая кнопка удаления в моем представлении связывала функцию удаления внутри объекта разрешения. с помощью:
data-bind="click: delete"
что является лучшей реализацией для функции удаления? я подумал о чем-то вроде: сделать ajax-вызов на сервер, который фактически удалит разрешение от пользователя. то, если вызов удалит текущее разрешение из наблюдаемого массива, тогда представление будет обновляться ... - это хорошая практика?
спасибо!
спасибо, что вы очень скоро попробуете и вернетесь сюда :), Я понимаю первую часть, и она выглядит красиво. но мне не понравилась вторая часть .. подумайте об этом, у вас есть объект, содержащий объект, а второй объект будет иметь ссылку на своего отца? .. и тогда у вас есть эта строка: parent.permissions.remove (self); вы переходите к родителям, затем в коллекцию, в которой вы находитесь, а затем удаляете себя. кажется странным для меня .. я понимаю, что он будет работать, но его все еще странно. Я думаю, что его недостающие события –
Я просто показывал вам способ сделать это с помощью простого js, как вы его выложили. На мой взгляд, удаление должно фактически быть членом родителя, а не дочерним. Таким образом, ваш метод удаления должен находиться в классе userViewModel. События осложняют ситуацию в этом тривиальном сценарии. – madcapnmckay
большое спасибо! не знал об этом: $ parent.delete yup this, конечно, ответит на мой вопрос, а также отлично выглядит. благодаря –