StructureMap InstanceScope. Гибрид и IDisposable

Первая проблема: да, печать не определена, потому что вы на самом деле ничего не возвращаете. Когда вы пытаетесь войти в систему что-то, что не возвращается, это по сути будет неопределенным. В приведенном ниже фрагменте я отредактировал его так, чтобы он возвращал innerHTML, чтобы вы могли видеть результат.

Во-вторых, вы не хотите использовать innerHTML.replace, если вы заменяете контент, который вы хотели бы просто сделать innerHTML = новым контентом.

.replace пытается заменить определенное подмножество символов, а не заменить содержимое.

Наконец, вы немедленно звоните по клику из-за того, как вы его передаете. Вам нужно обернуть его в анонимную функцию, чтобы он вызывался только по щелчку.

Кроме того, в приведенном ниже фрагменте я добавляю слово WAFFLES к каждому из ваших изменений, чтобы вы могли увидеть изменения.

const flipAllCards = function () {
    for(const card of cards) {
        card.innerHTML = `<img src="img/cardback.jpeg" alt="">`;
    }
};
const cards = document.querySelectorAll(".card");
function assignImages () {
    for(const card of cards) {
        const cardName = card.id + "WAFFLES";
        const imageName = `${cardName}.jpeg`;
        function flipCard (card) {
            card.innerHTML = (`<img src="img/${imageName}" alt="">`);
            return card.innerHTML;
        }
        console.log(flipCard(card));
        card.addEventListener('click', function(){flipCard(card)});
    }
}
assignImages();
<div class="table">
    <div class="card" id = "agentbrown"><img src="img/agentbrown.jpeg" alt=""></div>
    <div class="card" id = "agentjones"><img src="img/agentjones.jpeg" alt=""></div>
    <div class="card" id = "agentsmith"><img src="img/agentsmith.jpeg" alt=""></div>
    <div class="card" id = "spoonboy"><img src="img/spoonboy.jpeg" alt=""></div>
    <div class="card" id = "switch"><img src="img/switch.jpeg" alt=""></div>
    <div class="card" id = "trinity"><img src="img/trinity.jpeg" alt=""></div>
</div>

РЕДАКТИРОВАТЬ: Также отредактировал функцию flipAllCards, поскольку она также была неправильной. При замене innerHTML вы хотите просто использовать = not .replace. То, что вы сейчас имеете, пытается сказать: замените контент

. Вы можете увидеть лучшее представление этого ниже.

var element = document.getElementById('test');
// THIS WON'T UPDATE
element.innerHTML.replace('I love waffles!', 'juice is terrible');


// THIS WILL UPDATE

element.innerHTML = 'juice is amazing with waffles';
<div id="test">
    I love waffles!
<div>

7
задан Steven 20 April 2011 в 16:50
поделиться

3 ответа

Это - почти точная копия вопроса, который я задал 2 дня назад: Сессия, содержащая объекты, реализовывая IDisposable

InstanceScope. Гибрид просто хранит объект в HttpContext. Текущий. Объекты, если это существует или устройство хранения данных ThreadLocal иначе и InstanceScope. Работы HttpSession тот же путь кроме него используют HttpSession и ThreadLocal. Набор объектов живет на запрос, поэтому при реализации шаблона, на который указывают по моему вопросу, необходимо видеть, Располагают увольнение в конце текущего запроса.

1
ответ дан 7 December 2019 в 12:25
поделиться

Хорошо, таким образом, последняя версия StructureMap (2.3.5) имеет полезный небольшой названный метод

HttpContextBuildPolicy.DisposeAndClearAll();
Удобные методы очистки для HttpContext и ThreadLocal. HttpContextBuildPolicy. DisposeAndClearAll (), ThreadLocalStoragePolicy. DisposeAndClearAll (). Вызов любого метода извлечет все кэшируемые экземпляры и назовет IDispose, если объект будет IDisposable.

Ранее расположить методы не называли названными, я добавил, что к Application_EndRequest и они теперь. Я надеюсь, что это решит некоторые мои проблемы памяти.

Мы будем видеть.

4
ответ дан 7 December 2019 в 12:25
поделиться

Так решение; его Cassini, вызывающий проблемы. В основном это создает новый контекст для каждого запроса. Который является, почему я видел, что контекст был создан снова, относительно того, почему он не звонил I доступный правильно я никакая идея. Но снова я готов полагать, что это - что-то, чтобы сделать с Cassini.

0
ответ дан 7 December 2019 в 12:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: