1

私は MVC プロジェクトの最初の段階にいます。

意見:

<h4>About Me</h4>
<!-- ko if: !isEditingAboutMe() -->
<p data-bind="text: aboutMe()">@Model.AboutMe</p>
@if (Model.CurrentUserCanEdit)
{
    <a data-bind="click: editAboutMe">edit</a>
}
<!-- /ko -->
<!-- ko if: isEditingAboutMe() -->
@Html.TextBoxFor(model => model.AboutMe, new { data_bind = "value: aboutMe" })
<a data-bind="click: saveAboutMe">save</a>
<a data-bind="click: cancelAboutMe">cancel</a>
<!-- /ko -->

<script type="text/javascript">$(document).ready(ko.applyBindings(new ProfileVm(@Html.Raw(Json.Encode(Model)))));</script>

ProfileVm:

function ProfileVm(model) {
var self = this;

self.aboutMe = ko.observable(model.AboutMe);

self.saveAboutMe = function() {
    // need to put call to dataservice here
    self.isEditingAboutMe(false);

};

self.cancelAboutMe = function() {
    self.isEditingAboutMe(false);
};

self.isEditingAboutMe = ko.observable(false);
self.editAboutMe = function() {
    self.isEditingAboutMe(true);
};
}

ここで、dataservice.jsファイルを作成しました。

// should I init an object?  Not sure how to use this service across multiple js viewmodels
var dataservice = {
updateAboutMe: updateAboutMe  // some AJAX function
}

私の質問 - 複数の JS ビューモデルでこのデータサービスを使用する必要があります。モデルごとに新しいデータサービス オブジェクトを新しく作成する必要がない方法でこれを行うにはどうすればよいですか? シングルトンが必要なだけですが、A) これを容易にするために dataservice.js のコンテンツを構造化する方法、または B) profileVm などの呼び出し元からデータサービス シングルトンを初期化/要求する方法がわかりません。

これがrequireJSが機能する場所なのか、それともストレートjs​​でできるのかはわかりません。どんなヒントも素晴らしいでしょう。

4

0 に答える 0