سؤال

لدي خاصية تحكم تسمى authenticated الذي الافتراضي ل false.ومع ذلك ، في عرض تسجيل الدخول الخاص بي ، يجب أن أكون قادرا على ضبطه على true.أيضا ، في عرض الخروج الخاص بي ، يجب أن أكون قادرا على ضبطه على false.كيف يمكنني فضح هذه الخاصية داخل طريقة العرض?

var Controller = Backbone.Controller.extend({
    ...
    authenticated: false,

    login: function() {
        if(this.authenticated)
        {
            location.hash = '!/dashboard';
        } else {
            new LoginView();
        }
    },

    logout: function() {
        $.post('/admin/logout', {},
        function(resp){
        }, "json");

        this.authenticated = false;
        location.hash = '!/login';
    }
    ...
});
هل كانت مفيدة؟

المحلول

تقوم وحدة التحكم الخاصة بك بعمل وظيفة تسجيل الدخول والخروج بشكل صحيح.كل ما عليك القيام به هو أن يكون لديك وجهة نظرك النار العمود الفقري.شبيبة الأحداث ويكون وحدة تحكم تكون مسجلة لتلقي تلك.

في مكان ما في وحدة التحكم الخاصة بك ، تحتاج إلى شيء مثل:

var loginView = new LoginView(...);  // params as needed
loginView.bind("login_view:login", this.login);
loginView.bind("login_view:logout", this.logout);
loginView.render();

أيضا ، تحتاج إلى التأكد من إعداد وحدة التحكم للتعامل مع الأحداث ، لذلك هناك حاجة إلى شيء من هذا القبيل في وظيفة التهيئة الخاصة بك:

_.extend(this, Backbone.Events);
_.bindAll(this, "login", "logout");

ستحتاج طريقة العرض الخاصة بك إلى رمز الحدث ، لذا تأكد من إضافة _.تمديد(...) دعوة إلى تهيئة لها.

من وجهة نظرك عند الاقتضاء ، تحتاج إلى:

this.trigger("login_view:login");

و

this.trigger("login_view:logout");

كملاحظة أخيرة ، تريد أن تقوم وحدة التحكم بإجراء مكالمات خادم تسجيل الدخول والخروج.كل ما تحتاجه من العرض هو حدث ويحتمل أن يكون نموذجا مأهولا أو بيانات غير ذلك.سيتم تمرير هذه البيانات كمعلمة في بيان(عبارات) المشغل وسيتم استلامها كوسيطة في وظائف تسجيل الدخول/الخروج.أنا لم تدرج هذا في التعليمات البرمجية ، ولكن.

كنت تريد أساسا وجهة نظر لإدارة دوم وفقاعة حتى أحداث التطبيق إلى وحدة تحكم.يمكن لوحدة التحكم بعد ذلك التوسط مع الخادم وإدارة أي طرق عرض ضرورية.

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