2016-03-08 2 views
-1

Угловая привязка данных 2 велика, но я не могу найти угловой 2 способ удаления привязки данных по определенным переменным. Моя причина в том, что я начал подключать мое приложение до индексированного БД, и он работает, но я не могу позволить временному кешу (только массив всех индексированных значений БД) подчиняться привязке данных (если это было тогда временное кеш больше не будет зеркально отражать базу данных) моя база данных находится на службе angular2. Теперь я нашел способ удаления связывания данных, но это не совсем довольно мой код этоУдалить привязку данных в angular2

app.copy=function(item){ 
    return JSON.parse(JSON.stringify(item,app.replacer),app.reviver); 
} 
app.reviver=function(key,value){ 
    if(value.fn){ 
     value=new Function(value.parameters,value.body); 
    }else if(key==="time"){ 
     value= new Date(value); 
    } 
    return value; 
}; 
app.replacer=function(key,value){ 
    if(typeof value ==="function"){ 
     value=value.toString(); 
     value={ 
      fn:true, 
      parameters:value.match(/\(([\s\S]*?)\)/)[1].replace(/[\s\r\/\*]/g,""), 
      body:value.match(/\{([\s\S]*)\}/)[1].replace(/[\t\r\n]/g,"") 
     }; 
    } 
    return value; 
}; 

, как я сказал, что это работает, но это не очень. я могу просто запустить app.copy для переменных, прежде чем они покинут кеш, чтобы они не получали данные, привязанные ни к чему. Мне было интересно, есть ли более чистый способ сказать угловой 2, эта переменная не должна быть привязана к данным. и если нет, то, по крайней мере, я смог получить решение для других.

ответ

0

Если вы установите «обязательный» императив, вы можете остановить обязательство обязательным образом. В настоящее время нет поддержки в Angular2, чтобы отменить декларативное обязательство.

  • Связать представление только с полями компонента.

  • Используйте наблюдаемые в службе, которые запускают событие при изменении значений.

  • В компоненте подписаться на наблюдаемое и обновить поля в компоненте, когда значения в сервисе меняются.

  • Обновить значения в службе при изменении значений в компоненте.

+0

Проблема в том, что мои переменные связаны с сервисом. Доступ к службе осуществляется несколькими директивами, а некоторые из этих директив затем используют переменные, которые они получают из базы данных, в их представлениях, что означает, что если вы посмотрите на всю цепочку, она заканчивается тем, что выглядит как служебная переменная => переменная компонента => какая-либо другая переменная, которая изменилось. Теперь я не уверен, почему, потому что я явно не привязывал переменные, но по какой-то причине из-за этой цепочки, когда нижняя переменная изменена, так что это служебная переменная. – Binvention

+0

Единственный способ, которым я смог обойти эту цепочку, - создать новый объект, используя json stringify и parse. – Binvention

+0

Трудно определить по информации, которую вы предоставили. Я также не привык использовать Angular с JS. –

Смежные вопросы