标签: angularjs-scope

AngularJs多个实例和嵌套控制器

我有点担心我们是否可以创建多个控制器实例,并以嵌套形式创建例如 -

<div ng-controller="abc"> 
   <form ng-submit="call()">
       <input type=text ng-model="content"/>
   </form>
   <div ng-controller = "abc">
       <form ng-submit="call()">
            <input type=text ng-model="content"/>
       </form>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我只是想知道,如果我使用与其他控制器实例相同的模型,那么模型值将相同或不同.与静态变量类似?

angularjs angularjs-scope

0
推荐指数
1
解决办法
4334
查看次数

infdig Infinite $ digest循环

我正在学习AngularJs,但我无法使它成功.我读到了摘要周期,但对我来说并不清楚.很明显,这个代码失败了,因为进入一个无限循环,但我不知道如何解决它.有人能帮助我吗?

<!DOCTYPE html>
<html lang="eng" ng-app="test">
<head>
  <title>Learning Angular</title>
  <script  src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script>
  <script  src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular-route.js"></script>
  <script type="text/javascript">
    var app = angular.module('test', ['ngRoute']);

    app.factory('visitCounterService', function () {
      var counterService = function() {
        var _count = 1;

        var counter = function() { return _count++; };

        return { counter: counter }
      }();

      return counterService;
    });

    app.service('homeModel', ['visitCounterService', function(visitCounterService){
      this.getTitle = function() {
        var n = visitCounterService.counter();
        return "Welcome to this awesome demo. You are the visitor n° " + n;
      };

    }]);

    app.controller('homeController', ['$scope', 'homeModel', …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-scope

0
推荐指数
1
解决办法
2215
查看次数

如何在AngularJS中为$ scope分配模型

根据我读到的最佳实践,在我的控制器中,我将模型分配给$ scope而不是将多个单独的值分配给$ scope:

  .controller('TestCtrl', function AboutCtrl($scope, $http) {

    var model = {
        name: 'Bob',
        address: 'Squaresville'
        }
    };

    $scope = model;
})
Run Code Online (Sandbox Code Playgroud)

在我的模板中:

<input type="text" ng-model="model.name" /> {{model.name}}
<input type="text" ng-model="model.address" /> {{model.address}}
Run Code Online (Sandbox Code Playgroud)

但是当页面最初加载时,文本框没有任何价值.但是当我输入时,匹配的{{...}}标签会更新.

为什么初始值不会更新?

angularjs angularjs-scope

0
推荐指数
1
解决办法
553
查看次数

$ scope函数未定义(匿名函数)

我有这个代码:

  $scope.startTimer = function (){
    $scope.settings.showMinutes = false;
    $scope.settings.showStart = false;
    $scope.settings.showPause = true;
    $scope.settings.showReset = true;
    $scope.settings.showDonate = false;
    if ($scope.settings.seconds <= 0) {
      $scope.settings.seconds = 59;
      $scope.settings.minutes -= 1;
      if ($scope.settings.minutes < 0) {
        $scope.settings.showPause = false;
        $scope.settings.stopTimer = true;
        return;
      }
      setTimeout('startTimer()', 1000);
    } else {
      $scope.settings.seconds -= 1;
      setTimeout('startTimer()', 1000);
    }
  }
Run Code Online (Sandbox Code Playgroud)

当我启动startTimer功能时,我收到错误:

未捕获的ReferenceError:未定义startTimer(匿名函数)

我究竟做错了什么?

angularjs angularjs-scope

0
推荐指数
1
解决办法
1065
查看次数

AngularJS:在$ scope中搜索匹配值

我有一个页面,我想打印一些标签的值,我已经在JSON对象中:

$scope.countries = [
        {
            "key": "NL",
            "value": "Netherlands"
        },
        {
            "key": "BE",
            "value": "Belgium"
        },
        {
            "key": "TR",
            "value": "Turkey"
        },
        {
            "key": "PL",
            "value": "Poland"
        }
    ]
Run Code Online (Sandbox Code Playgroud)

所以我在范围内有国家/地区代码,并希望使用过滤器来替换实际国家/地区名称的代码.因此我实现了这样的过滤器:

 {{formulier.country | fetchname }} 
Run Code Online (Sandbox Code Playgroud)

我正在尝试构建的过滤器应该在上面的国家/地区范围内搜索国家/地区代码(密钥),并返回这些(值)的国家/地区名称.我开始使用这个过滤器,但不幸的是我没有让它工作.

app.filter('fetchname', function() {
    return function(input, all) {
        angular.forEach($scope.countries, function(key, value) {
            if (key === input) {
                return value;
            }
        });
    }
  });
Run Code Online (Sandbox Code Playgroud)

我必须对我的过滤器进行哪些更改才能在AngularJS中使用它?如何将'NL'替换为'荷兰'?

javascript angularjs angularjs-scope

0
推荐指数
1
解决办法
1571
查看次数

带有$ scope的AngularJS http POST

我试图使用AngularJS做一个http帖子,但angular不会将我的$scope变量转换为JSON.

这是我的代码:

        $http({
                method: "POST",
                url: "/Account/Login",
                data: $scope
            })
Run Code Online (Sandbox Code Playgroud)

这导致请求POST消息有

"$SCOPE"
Run Code Online (Sandbox Code Playgroud)

但如果我将其更改为输出我的任何范围属性,它将发送具有正确属性的消息,例如:

        $http({
                method: "POST",
                url: "/Account/Login",
                data: { email: $scope.email, password: $scope.password }
            })
Run Code Online (Sandbox Code Playgroud)

这导致请求POST消息有

{"email":"asdasd@Asdasd.asd","password":"asd"}
Run Code Online (Sandbox Code Playgroud)

我总是要像这样包裹我的请求吗?或者有没有办法告诉AngularJS发送范围内的所有属性?任何Pro/Con?

ajax http angularjs angularjs-scope

0
推荐指数
1
解决办法
3281
查看次数

如何用$ scope方法调用AngularJS控制器中的函数?

我在我的控制器中有一个函数,我希望能够从$ scope方法调用,所以我只能在控制器中重用我的代码.我使用该函数来清除一些输入字段.我想在插入用户后调用,并且我想将其分配给"清除"按钮单击.插入后调用函数工作正常,但不是将函数赋值给方法.

如果我将函数直接分配给$ scope.clearUser方法,它可以工作,但是在插入用户后我无法调用它.

function clearUser() {
    $scope.EmployeeNumber = '';
    $scope.isAdmin = false;
};

$scope.clearUser = clearUser();    
//also tried $scope.clearUser = this.clearUser();

//$scope.clearUser = function() {
//    $scope.EmployeeNumber = '';
//    $scope.isAdmin = false;
//};

<button ng-click="clearUser()" class="btn btn-default">
    <i class="fa fa-times"></i> Clear
</button>
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-scope

0
推荐指数
1
解决办法
886
查看次数

Angular两个不同的指令具有相同的控制器共享范围

我正在创建两个使用相同控制器的指令,因此我看到两个指令在控制器之间共享数据.我想要的是每个指令的数据都是UNIQUE,因此不应该共享数据.

var app = angular.module("app",[]);

app.controller('myCtrl', function($scope){
  $scope.data = {
    name: 'Javier'
  };
});


app.directive('dir1', function(){
  return {
    template: "<div style='background:red'><input type='text' ng-model='data.name'>{{data.name}}</div>",
    controller: "myCtrl"
  };
});


app.directive('dir2', function(){
  return {
    template: "<div style='background:yellow'><input type='text' ng-model='data.name'>{{data.name}}</div>",
    controller: "myCtrl"
  };
});
Run Code Online (Sandbox Code Playgroud)

https://jsbin.com/vetikuvada/1/edit?html,js,output

因此,在我的示例中,我想要的是当我在其中一个文本框中编辑文本时,它不会触发其他文本框中的更改.我知道控制器部署了不同的实例,但不知怎的,它们共享范围,我需要完全不同.这可能吗?

该示例是一个非常复杂的应用程序的一小部分,所以我必须能够使用这种方法而不是其他方法.

javascript angularjs angularjs-directive angularjs-scope angularjs-controller

0
推荐指数
1
解决办法
2378
查看次数

Angularjs指令,双向绑定不绑定

所有,

当涉及到指令时,我对angularjs的理解是当你有一个像这样的隔离范围设置时:

scope: {
  dataSource: '='
}
Run Code Online (Sandbox Code Playgroud)

在链接功能内: function(scope, ele, attr)

如果像这样使用,scope将有一个dataSource绑定到name我的控制器上的属性:

<my-element data-source='name'></my-element>

然而事实并非如此,这是一个例子:

http://jsfiddle.net/HB7LU/21879/

谢谢

史蒂夫

angularjs angularjs-directive angularjs-scope isolate-scope

0
推荐指数
1
解决办法
88
查看次数

在Angular UI Router中提供带ID的URL

我有一个问题,当我编辑数据时,我的网址没有显示id示例:/answer/1 or /answer/2 or /answer/3等我很困惑,因为我使用UI ROUTER 我是初学者使用UI ROUTER angularjs.你能帮助我吗 ?我该怎么办 ?谢谢

我的路由代码:

.state({
    name: 'answer',
    url : '/answer/',
    params : {
                obj : null  
    },
    controller: 'answer-controller',
    templateUrl: 'templates/table-answer.html'
})
Run Code Online (Sandbox Code Playgroud)

ng-click转到表格答案:

<button type="button" class="btn btn-default" ng-click="ListAnswer(data.item)"><i class="fa fa-eye"></i> View Answer</button>
Run Code Online (Sandbox Code Playgroud)

将params $ scope.ListAnswer传递给answer-controller.js

$scope.ListAnswer = function(data) {

    $state.go('answer', {obj : data});

};
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-scope angularjs-routing angular-ui-router

0
推荐指数
1
解决办法
2672
查看次数