custom_bindings/label.js

/**
 * A wrapper for the knockout's text binding. This just adds a dummy name or a temporary name to the newly added field (e.g Item 1);
 * @module app/custom_bindings/label
 * @requires knockout
 * @requires jquery
 * @requires app/models/Field
 * @requires hasher
 */
define(['knockout', 'jquery', 'models/Field', 'hasher'], function(ko, $, Field, hasher) {
    ko.bindingHandlers.label = {
        update: function(el, valueAccessor, allBindings, viewModel, bindingContext) {
            var label = ko.unwrap(valueAccessor()),
                field = ko.dataFor(el),
                numbering = field.showNumbering() ? field.numbering() : bindingContext.$index() + 1,
                dummyText = 'Item ' + numbering;

            if(field.key === '5') {
                fieldLabel = field.panel_title() || label;
            }else if (field.key === '10') {
                fieldLabel = field.defaultText() || label;
            } else {
                fieldLabel = label.length && label;
            }
            if (!fieldLabel) {
                fieldLabel = dummyText;
            }
            if(field.temporary_label) {
                
            field.temporary_label = field.temporary_label.split(' ')[0]  + ' ' + fieldLabel;
            }
            newValueAccessor = function() {
                return fieldLabel;
            };
            ko.bindingHandlers.text.update(el, newValueAccessor, allBindings, viewModel, bindingContext);

        }
    }
});