首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular.js /共享ngModel

Angular.js /共享ngModel
EN

Stack Overflow用户
提问于 2015-04-29 10:58:42
回答 4查看 240关注 0票数 1

这是我的HTML。

代码语言:javascript
复制
<input type="text" id="ghusername" ng-model="username" placeholder="Github username...">
    <span id="ghsubmitbtn" ng-click="getUsers()">Pull User Data</span>

这是我的主计长A。

代码语言:javascript
复制
app.controller("homeController", ["$scope", "$http", function ($scope, $http) {
    $scope.getUsers = function () {
        $http.get("https://api.github.com/users/" + $scope.username)
          .success(function (data) {
              //some stuff
          })

这是B(为了发帖)。如何在HTML上获得这个用户名,以便在另一个控制器中显示它?例:

代码语言:javascript
复制
app.controller("reposController", ["$scope", "$http", function ($scope, $http) {
$scope.getRepos = function () {
    $http.get("https://api.github.com/users/" + $scope.username + "/repos")
        .success(function (data) {
            // some stuff
        })
};

我尝试过用户服务,工厂,甚至$rootScopes,但是它们似乎不起作用,有什么帮助吗?顺便说一句,如果我不清楚,告诉我,我会编辑这篇文章,谢谢。

编辑:我最终使用了$rootScope,我知道这不是最好的主意,但这只是个小问题。我会保留你所有的答案作为参考,因为我确信它们都有效,但我太笨了,无法实现它们。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-29 11:04:13

必须将$rootScope引用到控制器中:

代码语言:javascript
复制
app.controller("homeController", ["$scope", "$http","$rootScope", function ($scope, $http, $rootScope) ...

在此之后,只需访问根范围变量:

controller1:$rootScope.someValue = "some value"; Controller2:$scope.controllerScopeValue = $rootScope.someValue

票数 0
EN

Stack Overflow用户

发布于 2015-04-29 11:05:38

使用service

代码语言:javascript
复制
app.service('name', [function(){}])

然后将'name'添加到两个类似于controllers

代码语言:javascript
复制
app.controller("reposController", ["$scope", "$http", 'name', function ($scope, $http, name) {

$scope.name = name;

然后你就可以像

代码语言:javascript
复制
name.username

在html中

代码语言:javascript
复制
<input type="text" id="ghusername" ng-model="name.username" placeholder="Github username...">
票数 0
EN

Stack Overflow用户

发布于 2015-04-29 11:22:00

如果您的数据模型有一些假设,这应该是可行的。

它创建一个shared单例对象。一个控制器添加用户(或其他数据)作为该属性的属性。然后,其他控制器,或者如果重新加载相同的控制器,就可以访问shared上的相同数据。

请注意,service只返回任何东西的单个实例,它不需要代码或方法。在本例中,使用value更容易,它是function() { return {}; }的缩写,也同样有效。

记住在任何需要的地方注入shared

代码语言:javascript
复制
app.controller("homeController", ["$scope", "$http", "shared", function ($scope, $http, shared) {
    $scope.getUsers = function () {
        $http.get("https://api.github.com/users/" + $scope.username)
          .success(function (data) {
              shared.user = data.user; // or wherever it comes from
              //some stuff
          })

app.controller("reposController", ["$scope", "$http", "shared", function ($scope, $http, shared) {
$scope.getRepos = function () {
    $http.get("https://api.github.com/users/" + shared.user.name + "/repos")
        .success(function (data) {
            // some stuff
        })
};

app.value('shared', {});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29941713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档