だから私はrequire.jsとknockout.jsを一緒に使っています。ユーザーを収集する簡単なページがあります。
コードは次のとおりです。
cshtml ファイル:
@section scripts{
<script data-main="../Scripts/app/usermanagement/app.invite" src="../Scripts/lib/require.js"></script>
}
<div id="usermanagement-invite-view">
<p>Enter all the users you would like to invite to this account. You will be able to set the permissions onces you have added them.</p>
<span data-bind="text: ko.toJSON($data)"></span>
<div data-bind="foreach: invitedUsers()">
<div><span data-bind="text: firstName"></span></div>
<div><span data-bind="text: lastName"></span></div>
<div><span data-bind="text: emailAddress"></span></div>
</div>
<div>
<input type="text" placeholder="First Name" data-bind="text: firstName" class="input" />
<input type="text" placeholder="Last Name" data-bind="text: lastName" class="input" />
<input type="email" placeholder="EmailAddress" data-bind="text: emailAddress" class="input" />
<input type="button" value="Invite" data-bind="click: invite" class="submit" />
</div>
</div>
ここに app.invite.js があります
requirejs.config({
"baseUrl": "../Scripts/app/usermanagement",
"paths": {
"app.invite": "app.invite",
"ko": "../../lib/knockout-2.2.1",
"jquery": "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min",
"toastr": "../../lib/toastr"
}
});
// Load the main app module to start the app
require(["main.invite"], function (bs) { bs.run(); });
main.invite.js は次のとおりです。
define(['ko', 'inviteViewModel'], function (ko, inviteViewModel) {
var
run = function () {
var vm = new inviteViewModel();
ko.applyBindings(vm, document.getElementById('#usermanagement-invite-view'));
};
return {
run: run
};
});
以下は、inviteViewModel です。
define('inviteViewModel', ['jquery', 'ko', 'toastr', 'model.user'], function ($, ko, toastr, User) {
return function inviteViewModel() {
var self = this;
self.firstName = ko.observable();
self.lastName = ko.observable();
self.emailAddress = ko.observable();
self.invitedUsers = ko.observableArray();
self.invite = function () {
var newUser = new User();
newUser.firstName(self.firstName());
newUser.lastName(self.lastName());
newUser.emailAddress(self.emailAddress());
self.invitedUsers().push(newUser);
console.log(self.invitedUsers());
};
}
});
何らかの理由で、招待機能を呼び出すと、コードはコレクションに何かを追加していることを示していますが、UI は更新されません。これは、console.log を実行したときの様子です。ただし、これは値が存在することを示していません
私は何を間違っていますか?