سؤال

جافا سكريبت التالية التي تحدد كائن ميفيوموديل مع خاصية "النص"وظيفة"حفظ".

<script type="text/javascript">
    function MyViewModel() {
        this.text = ko.observable('');
    }

    MyViewModel.prototype.save = function () {
        alert(this.text()); // Works fine
        var data = ko.ToJSON(this); // Error: Object doesn't support this property or method ?
        $.ajax({
            type: 'POST',
            url: '/Person/Save',
            data: data,
            contentType: 'application/json',
            success: function (data) {
                alert(data);
            }
        });
    };
</script>

<script type="text/javascript">
    $(function () {
        var viewModel = new MyViewModel()
        ko.applyBindings(viewModel);
    });
</script>


والزر التالي تعريف:

<button data-bind="click: save">SAVE</button>


النتيجة عند النقر على الزر:

  • الوصول إلى خاصية باستخدام هذا.النص () يعمل بشكل جيد
  • تحويل كائن جافا سكريبت إلى كائن جسون :كو.توجسون (هذا) لا يعمل ويلقي خطأ:"خطأ:الكائن لا يدعم هذه الخاصية أو طريقة"

ربما هناك شيء تافه مفقود أو خاطئ ، لكن لا يمكنني رؤيته.أي نصائح ?

هل كانت مفيدة؟

المحلول

خروج المغلوب ليس لديه ToJSON الطريقة-لديها toJSON طريقة على الرغم من:

function MyViewModel() {
    this.text = ko.observable('');
}

MyViewModel.prototype.save = function () {
    alert(this.text()); // Works fine
    var data = ko.toJSON(this); // Works fine too
    $.ajax({
        type: 'POST',
        url: '/Person/Save',
        data: data,
        dataType: 'json',
        success: function (data) {
            alert(data);
        }
    });
};

نصائح أخرى

لقد حددت نموذج العرض الخاص بك كدالة (فئة ، إذا أردت): Genacodicetagpre

بدلاً من ذلك ، يجب أن تحدده على أنه var (كائن): Genacodicetagpre

يجب أن تجد ما يلي يعمل بشكل جيد: Genacodicetagpre

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top