 
         cd.watch '$destroy', ->
             mapper.release id
+            select.change()
         return

        cd = env.changeDetector.new()  # child CD
        env.stopBinding = true

        cd.$select = mapper = new Mapper

        alight.bind cd, element,
            skip_attr: env.skippedAttr()

        watch = cd.watch key, (value) ->
            id = mapper.getId value
            if id
                element.value = id
            else
                element.selectedIndex = -1
        cd.scan()

        onChangeDOM = (event) ->
            item = mapper.getItem event.target.value
            cd.setValue key, item
            cd.scan
                skipWatch: watch


    alight.d.al.option = (scope, element, key, env) ->
        cd = step = env.changeDetector
        for i in [0..4]
            select = step.$select
            if select
                break
            step = step.parent or {}
        if not select
            alight.exceptionHandler '', 'Error in al-option - al-select is not found',
                cd: cd
                scope: cd.scope
                element: element
                value: key
            return

        mapper = select.mapper
        select.change()

        id = null
        cd.watch key, (item) ->
