jQuery的:
$("#inputParentName").val(response.name);
HTML / Angular Form:
<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。我只是想看看如何才能让它发挥作用。在我认为应该完成所有工作之后,我将重构指令。
答案 0 :(得分:1)
如果您希望在视图显示时初始值为“某事”,则可以(技术上)使用ng-init,但docs明确告诉我们不要这样做。
ngInit的唯一合适用途是对特殊属性进行别名处理 ngRepeat的内容,如下面的演示所示。 除此之外,你应该 使用控制器而不是ngInit初始化范围上的值。
但如果你只是想测试一下,ng-init看起来像是:
<input ng-model="test.val" ng-init="test.val='something'" />
首选的方法是将值添加到控制器$ scope。
<input ng-model="test.val" />
然后在你的控制器中:
myapp.controller('MyCtrl', function ($scope) {
$scope.test = {
val: 'something'
}
});
答案 1 :(得分:0)
@ jme11和This Answer让我深入了解了以下方法:我想出了如何让它发挥作用:
Facebook逻辑的jQuery代码:
$("#inputParentName").val(response.name);
$("#inputParentEmail").val(response.email);
$("#inputParentBirthday").val(response.birthday);
angular.element(document.getElementById('inputParentName')).scope().$apply();
angular.element($('#inputParentName')).scope().setName(response.name);
angular.element($('#inputParentEmail')).scope().setEmail(response.email);
angular.element($('#inputParentBirthday')).scope().setBirthday(response.birthday);
我的控制器代码:
$scope.setName = function (val) {
addParentService.inputParentName = val;
}
$scope.setEmail = function (val) {
addParentService.inputParentEmail = val;
}
$scope.setBirthday = function (val) {
addParentService.inputParentBirthday = val;
}
服务代码:
vm.addParent = function () {
alert(vm.inputParentName);
alert(vm.inputParentBirthday);
alert(vm.inputParentEmail);
alert(vm.inputParentCellPhone);
alert(vm.inputParentCarrier);
};
现在,当我添加我的父母时,从Facebook预先填充的值可以在我的服务代码中使用。
再次 - 感谢jme11帮助我解决这个问题。