【发布时间】:2015-05-27 14:15:11
【问题描述】:
jQuery:
$("#inputParentName").val(response.name);
HTML/Angular 表单:
<form role="form" ng-submit="addParentService.addParent()">
<div class="form-group">
<label for="inputParentName">Name</label><input class="form-control" id="inputParentName" value="" type="text" ng-model="addParentService.inputParentName" />
</div>
...
<button class="btn btn-default" type="submit">Submit</button>
</form>
以下代码运行时在输入框中正确显示我的名字。
但是,在我的服务中,当我尝试查看 inputParentName 的值时,我得到一个未定义的错误。但是,当我在 inputParentName 的文本框中输入内容时,输入的值会显示出来。
控制器代码:
myapp.controller('AddParentController', function ($scope, addParentService) {
$scope.addParentService = addParentService;
});
服务代码:
myapp.service('addParentService', function () {
var vm = this;
vm.parent = [];
vm.addParent = function () {
alert(vm.inputParentName);
};
});
我可以做些什么不同的事情,以便我可以注册预加载的数据,以便我的服务识别数据?
这只是我试图开始工作的基本代码。我意识到它不是纯粹的 AngularJS。我只是想看看我怎样才能让它发挥作用。在一切正常后,我将使用指令进行重构。
【问题讨论】:
-
第 1 名你为什么包含 angularjs 的 jquery?
-
@pankajparkar - 这只是我试图开始工作的基本代码。我意识到它不是纯粹的 AngularJS。我只是想看看我怎样才能让它发挥作用。在一切正常后,我将使用指令进行重构。
-
从 Angular 的角度来看,您的 jQuery 调用似乎正在“在雷达下”更改字段的值,这就是为什么未检测到此更改的原因。您可以在控制器中预填充该字段。
-
其实在 AngularJS 中 input 是一个指令:docs.angularjs.org/api/ng/input 如果你想预先填充 input,你初始化模型。所以,设置 addParentService.inputParentName 的值
-
不会。控制器是模型和视图之间的粘合剂。所以这就是你在模型上初始化值的地方。该服务适用于跨领域关注的事物——您希望在应用程序的许多地方使用的事物,而不是特定于特定视图、控制器或模型的事物。因此,您的服务可用于从后端检索数据并与多个控制器共享。
标签: angularjs