无法在AngularJS中读取未定义的属性“选择”

时间:2014-04-07 01:47:38

标签: javascript angularjs

我遇到了将表单输入链接到已定义的工厂的麻烦,我已将其注入到呈现表单的控制器中。这是我的工厂:

App.factory('DeviceSelection',function() {
   var states=[{selection:{}},{selection:{}},{selection:{}},{selection:{}}];
   return states;
});

这是我表格的输入:

            <div class="controls">
              <label class="radio">
                <input type="radio" name="user[role]" id="user_role_managing_editor" value="Managing editor" ng-model='states[0].selection.hours'>
                Yes 
              </label>
              <label class="radio">
                <input type="radio" name="user[role]" id="user_role_area_editor" value="Area editor", ng-model='states[0].selection.hours'>
                No 
              </label>
            </div>

因此,当我尝试单击该Radio框时,我在JS Console中看到以下内容:

TypeError: Cannot read property 'selection' of undefined

这是否意味着我需要在呈现视图之前初始化模型。如果是这样,在哪里?

我正在尝试实现一个多步骤表单,链接模型中的所有输入,直到我能够将结果发送到API时达到最后一步。正如在这里所要求的那样:

Store status between forms in AngularJS?

1 个答案:

答案 0 :(得分:2)

你说你注入了你的控制器。看到注射会很高兴,但让我盲目猜测可能发生的事情:

我假设你有(像这样):

YourApp.controller('YourController', ['$scope', 'YourFactory', function ($scope,$yourFactory) {
...

但是,您是否已将注入设置为$scope?否则视图将无法访问:)

所以,如果你没有,请执行以下操作:

 $scope.states=$yourFactory;

我真的相信这就是发生的事。控制器需要通过$scope

告诉视图在哪里找到该状态数组