服务

时间:2015-05-27 14:15:12

标签: angularjs

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。我只是想看看如何才能让它发挥作用。在我认为应该完成所有工作之后,我将重构指令。

2 个答案:

答案 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帮助我解决这个问题。