0

だから私は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 を実行したときの様子です。ただし、これは値が存在することを示していません

コンソール ログ

私は何を間違っていますか?

4

1 に答える 1