我正在寻找一个很酷的想法,如何在模型(轨道上的红宝石)和控制器(angularjs)之间共享一个恒定值。 在开始使用angular之前,我习惯在模型的常量变量中保存一些值,例如:
class MyModel << ActiveRecord::Base
attr_accessor :sample1
OPTIONAL_VALUES = ['val1', 'val2', 'val3', 'val4', 'val5']
end
这样我可以在我的两个视图中使用OPTIONAL_VALUES
(例如,为了填充select标签)和我的模型验证(为了验证sample1不会获得任何不在的值列表)。
但是现在,我的客户端和我的观点与“rails side”分开并管理我的AngularJS,我仍然需要使用相同的OPTIONAL_VALUES
数组。我不想重复代码,你知道我怎么能实现它吗?
答案 0 :(得分:0)
您可以使用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);
}