Rails で AngularJS を使用しており、AngularJS スコープに登録されていない動的にネストされたフォーム項目を作成しています。それらには「ng-dirty」クラスが割り当てられます。
私は 3 つの家を持つ投資家を持っています。私の Angular コントローラーでは、代わりに Rails を介してこれらを設定したいので、最初の 2 つだけを割り当てます。
$ (event) ->
app = angular.module "investor", []
app.controller("InvestorCtrl", ["$scope", ($scope) ->
$scope.houses = [
{ cost: "295000", value: "450000" },
{ cost: "600000", value: "620000" }
]
$scope.calc_totals = ->
# Initialise variables
cost = 0
value = 0
# Go through each house and calculate the total cost
for h in $scope.houses
cost = parseInt(cost) + parseInt(h.cost)
value = parseInt(value) + parseInt(h.value)
# Set the total
$scope.total_cost = cost
$scope.total_value = value
# Run the calculation at the start
# $scope.calc_totals()
])
angular.bootstrap document, ['investor']
これが私のフォームです
%div{"ng-controller" => "InvestorCtrl"}
= form_for(@investor) do |f|
- if @investor.errors.any?
#error_explanation
%h2
= pluralize(@investor.errors.count, "error")
prohibited this investor from being saved:
%ul
- @investor.errors.full_messages.each do |msg|
%li= msg
.field
= f.label :name
= f.text_field :name, "ng-model" => "name"
- i = 0
= f.fields_for :houses do |builder|
.field
= render :partial => "house", :locals => {:f => builder, :i => i}
- i = i + 1
.field
= f.label :total_cost
= f.number_field :total_cost, "ng-model" => "total_cost"
.field
= f.label :total_value
= f.number_field :total_value, "ng-model" => "total_value"
.actions
= f.submit
1 番目または 2 番目の家の「コスト」または「値」を入力すると、total_cost が更新されますが、3 番目の家を更新すると、total_cost は更新されません。
コントローラーに割り当てずにこれらの要素をリッスンするようにangularjsに動的に指示する方法はありますか?