Я ищу отличную идею о том, как делиться постоянным значением между моделью (рубина на рельсах) и контроллером (angularjs). Прежде чем начать использовать углы, я использовал для хранения некоторых значений в постоянной переменной моих моделей, например:
class MyModel << ActiveRecord::Base
attr_accessor :sample1
OPTIONAL_VALUES = ['val1', 'val2', 'val3', 'val4', 'val5']
end
Таким образом, я мог бы использовать OPTIONAL_VALUES
в обоих моих представлениях (например, для заполнения тега select) и моей проверки модели (чтобы проверить, что sample1 не получит никакого значения, которого нет в списке).
Но теперь моя клиентская сторона и мои взгляды отделены от "стороны рельсов" и управляют моим AngularJS, и мне все еще нужно использовать тот же массив OPTIONAL_VALUES
. Я не хочу повторять код, не знаете ли вы, как я могу это сделать?
Вы можете использовать ng-init, чтобы передать их, как:
<div ng-controller="ctrl" ng-init="inti('<%= stringify MyModel.OPTIONAL_VALUES with rails here %>')"/>
И в вашем контроллере вы создаете метод init, например:
function init(ov) {
this.optionalValues = JSON.parse(ov);
}