<!-- тег должен лежать до загрузки скриптов приложения -->
<script>
window.userInfo = <?= json_encode(Session::get('user')); ?>;
</script>
<!-- внутри приложения -->
<script>
app.config(function($provide) {
$provide.constant('userInfo', angular.copy(window.userInfo));
});
</script>
<!-- inside view init -->
this.model.on('change', function updateView() { } );
<!-- view property -->
events: {
'input keyup': 'updateModel'
}
var a = [{x: 1, y: 1}, {x: 2, y: 2}];
var b = cloneArray(a);
b[0].x = 5;
console.log(a);
console.log(b);
function cloneArray(arr) {
var result = [];
arr.forEach(function(value) {
if (!isPrimitive(value)) {
value = copy(value);
}
result.push(value);
});
return result;
}
function isPrimitive(value) {
// string, boolean, number
return value == null || /^[sbn]/.test(typeof value);
}
// корректно работает только для простых объектов
function copy(value) {
return JSON.parse(JSON.stringify(value));
}
window.routes = {
send_sms_path: ['GET', '/send/sms/:id']
};
<!-- где-то внутри вьюхи -->
<%= render_routes %>
# ApplicationHelper.rb
def render_routes
# Тут надо взять текущие роуты, создать из них хэш, пропусть его через JSON.generate и выплюнуть отсюда
# что-то вроде "<script>window.routes = #{JSON.generate roues};</script>"
end
angular.module('toster', [])
.controller('MainCtrl', function($scope) {
$scope.data = {
price: 0,
count: 0
};
$scope.$watchCollection('data', function(data) {
var computed = 0;
var count = parseInt(data.count, 10);
if (count) {
computed = Math.round(data.price * count / 100);
}
$scope.computed = computed;
});
});
var map = new ymaps.Map(...);
$modal.on('shown.bs.modal', function() {
map.container.fitToViewport();
});
<p>Описание: {{product.description | limitTo:25}}</p>