var volume = bla bla,
result;
if(APP.helper.isNumCheck(volume)) {
result = volume;
} else {
result = undefined;
};
this.model.set({shippOptionsVolume: result});
писать такое:
var volume = bla bla;
if(APP.helper.isNumCheck(volume)) {
this.model.set({shippOptionsVolume: volume});
} else {
this.model.set({shippOptionsVolume: undefined});
};
пока она умеет после клика по любой клетке выводить в консоль координаты клетки. каждой клетке соответствует своя модель. для вывода в консоль координаты берутся из атрибутов элемента 'data-*'
проблема в том, что эти же самые координаты хранятся в модели каждой клетки. таким образом получается дублирование данных(в модели и в атрибутах элемента)
хотелось бы чтобы после каждого клика данные брались из модели, а не из атрибутов элемента
проблема в том, что я не понимаю что именно здесь можно протестировать. вот моя попытка:
describe("DepartCityView:", function() {
beforeEach(function () {
this.view = new APP.DepartCityView();
});
it ('should init successful', function () {
expect(this.view).toBeDefined();
});
it ("produces the correct HTML", function() {
this.view.render();
var id = this.view.$el.attr('id');
expect(id).toEqual('departCityWidget');
});
});
но даже здесь второй тест явно бесполезный. а хотелось бы протестировать в этом представлении вообще всё, что тестируется
можете смеяться, но у меня такой параноидальный вопрос. допустим есть метод:
errMsgManage: function(msgArr, elem) {
var msgCont = this.$el.find(elem);
msgCont.empty();
for(key in msgArr) { msgCont.append(msgArr[key]) };
}
здесь один элемент ищется более одного раза. поэтому логика говорит, что его нужно сохранить в переменную msgCont и затем использовать хоть 2 раза, хоть 200 раз
с другой стороны, код будет более удобно читаться, если в этом случае не придерживаться описанного выше правила:
спасибо за ответы. я всё таки решил продолжать использовать длинные имена. не думаю, что это сильно будет влиять на производительность так как сегодня почти не осталось разработчиков, которые не пользуются сборщиками типа проектов grunt. а это своего рода "компилятор", который кроме всего прочего, преобразует имена в легкоразрешимые
пробема в том, что после начала игры если я несколько раз кликаю по одной и той же клетке должны выводится предупреждающие сообщения. они выводятся, только не по одному, а по нескольку
а надобы чтобы после каждого клика выводилось только одно сообщение
чуваки, а вот так лучше стало?
только что-то у меня не получилось константу DIRECTION совсем наверх вынести и теперь каждый экземпляр имеет свою константу. так допустимо делать?
ps:
как этот скрипт в результате должен работать можно посмотреть здесь: ZQpzXQ [codepen.io]
но здесь не используются прототипы и поэтому код неудобно читать
ребята, не посылайте только. со мной в последнее время случился паттерн головного мозга и теперь я пишу простенькие никому не нужные примеры. вот один из них. дайте пожалуйста обзор кода, всё ли зесь верно с точки зрения MVC? что можно улучшить и исправить?
class RunnerModel(object):
def __init__(self, name, height):
''' default height in mm '''
self.name = name
self.height = height
class RunnerView(object):
def __init__(self, model):
self.model = model
def output_height_in_m(self):
print('runner name: ' + str(self.model.name))
print('runner height(m):' + str(self.model.height/1000))
def output_height_in_cm(self):
print('runner name: ' + str(self.model.name))
print('runner height(cm):' + str(self.model.height/10))
class RunnerController(object):
def __init__(self, model, measure):
self.model = model
self.view = RunnerView(self.model)
self.measure = measure
def output(self):
if self.measure == 'm':
self.view.output_height_in_m()
elif self.measure == 'cm':
self.view.output_height_in_cm()
if __name__ == "__main__":
runner_1 = RunnerModel(name='sergey', height=1820)
controller_1 = RunnerController(runner_1, 'cm')
controller_1.output()
controller_1 = RunnerController(runner_1, 'm')
controller_1.output()
после запуска скрипта в консоль выводится следующее:100: