angularjs - Angular - 从 Controller 中的对象获取数据到 ng-Model

标签 angularjs angularjs-scope angular-ui-router angular-ngmodel angularjs-ng-model

我无法从 Controller 中的对象将数据放入 ng-model View 中。

View 1:

<input type="text" class="user-input" name="profile.firstname" ng-model="profile.firstname" ng-minlength="2" required pattern=".{2,}" placeholder="E.g. Anvika" title="Please enter atleast 2 characters">

当我在 VIEW2 中单击一个按钮时,它会触发一个函数(比如函数“test”)。

View 2
<input type="submit" ng-click="register.test()" ui-sref="doctorRegister" value="Profile">

Controller :
var app = angular.module('app');
app.controller('registerController', ['$scope', 'tempDataStorageService', function ($scope, tempDataStorageService) {


var register = this;
register.doctor = {};
register.test = function () {
    register.refreshProfile = tempDataStorageService.get(register.doctor.profile);
    //console.log(register.refreshProfile);
    var a = register.refreshProfile.firstname;
    console.log(a);     
}
}

临时数据存储服务:
var app = angular.module('app'); 
app.factory('tempDataStorageService', function() {
    var savedData = {};
    function set(data) {
        savedData = data;
    }
    function get() {
        return savedData;
    }

    return {
        set: set,
        get: get
    }
});

编辑:如果有帮助,我也尝试显示 Controller 的声明。
我怎样才能做到当我点击 VIEW2 上的 Profile 按钮时,它会用数据填充 VIEW1?

最佳答案

plunker:

Working example

html:

<!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    <script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.8/angular.js" data-semver="1.4.8"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl as mainCtrl">

    <form>
      <h2 class="text-primary">Get data into ng-Model from object in controller</h2>
      <hr>
      <div class="form-group">
        <h3 ng-class="!mainCtrl.firstName? 'text-danger' : 'text-success'">Enter Name</h3>
        <input type="text" class="form-control" ng-model="mainCtrl.firstName" placeholder="E.g. Anvika">
      </div>


      <hr>
      <h3 class="text-info">This is what you are typing: {{mainCtrl.firstName}}</h3>
      <button type="button" class="btn btn-success" ng-click="mainCtrl.test()">Save Name</button>
    </form>

    <hr>
    <h3 class="text-info">This is what is stored</h3>
    <h4>Doctor first name: {{mainCtrl.storedData.doctorFirstName}}</h4>
  </body>

</html>

JS:
var app = angular.module('plunker', []);

app.controller('MainCtrl', ['tempDataStorageService', function(tempDataStorageService) {

  var register = this;

  register.firstName = "";

    register.storedData = tempDataStorageService;

    register.test = function () {
      tempDataStorageService.setName(register.firstName);
    }

}]);


app.factory('tempDataStorageService', function() {
    // The service object
    var profile = {};

    profile.doctorFirstName = "No doctor data stored";

    //The functions

    profile.setName = function(data) {
        profile.doctorFirstName = data;
    }

    profile.getName = function() {
        return profile.doctorFirstName;
    }

    // return the service object
    return profile;
});

推荐:
  • 提问时请正确格式化代码。
  • 作为良好的做法,请使用样式指南。一个好的起点是 John Papa's Angular Style Guide
  • 关于angularjs - Angular - 从 Controller 中的对象获取数据到 ng-Model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34921512/

    相关文章:

    javascript - 我怎样才能在 AngularJS 中做 slideDown 或 slideUp

    javascript - Angular 样本跟进

    javascript - 不满足条件时如何使用 ng Show/ng Hide 隐藏 DOM 元素?

    javascript - 范围更改不执行指令中的代码

    Angular 7 并且无法绑定(bind)到 'routerlink',因为它不是 'a' 的已知属性

    javascript - Angularjs UI-Router : How to create view inside nested view?(3层嵌套 View )

    javascript - 通过 angularjs ng-repeat 传递 href 链接

    javascript - 如何使函数在angularjs中的两个或多个 Controller 之间可重用

    AngularJS - 在 ng-repeat 中使用 indexOf 来显示/隐藏值

    javascript - Angular 状态刷新页面在浏览器中不起作用