我遇到了将表单输入链接到已定义的工厂的麻烦,我已将其注入到呈现表单的控制器中。这是我的工厂:
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时达到最后一步。正如在这里所要求的那样:
答案 0 :(得分:2)
你说你注入了你的控制器。看到注射会很高兴,但让我盲目猜测可能发生的事情:
我假设你有(像这样):
YourApp.controller('YourController', ['$scope', 'YourFactory', function ($scope,$yourFactory) {
...
但是,您是否已将注入设置为$scope
?否则视图将无法访问:)
所以,如果你没有,请执行以下操作:
$scope.states=$yourFactory;
我真的相信这就是发生的事。控制器需要通过$scope