标签: angularjs

AngularJS控制器中的'this'与$ scope

AngularJS主页"创建组件"部分中,有以下示例:

controller: function($scope, $element) {
  var panes = $scope.panes = [];
  $scope.select = function(pane) {
    angular.forEach(panes, function(pane) {
      pane.selected = false;
    });
    pane.selected = true;
  }
  this.addPane = function(pane) {
    if (panes.length == 0) $scope.select(pane);
    panes.push(pane);
  }
}
Run Code Online (Sandbox Code Playgroud)

注意如何select添加方法$scope,但是addPane添加了方法this.如果我将其更改为$scope.addPane,则代码会中断.

文档说实际上存在差异,但没有提到差异是什么:

以前版本的Angular(pre 1.0 RC)允许您this与该$scope方法互换使用,但现在不再是这种情况了.内的方法上的范围限定this并且$scope是可互换的(角套this$scope),但是不另外你的控制器构造内部.

如何this$scope在AngularJS控制器的工作?

this angularjs angularjs-scope

1013
推荐指数
5
解决办法
29万
查看次数

使用$ scope.$ emit和$ scope.$ on

如何$scope使用.$emit.$on方法将对象从一个控制器发送到另一个控制器?

function firstCtrl($scope) {
    $scope.$emit('someEvent', [1,2,3]);
}

function secondCtrl($scope) {
    $scope.$on('someEvent', function(mass) { console.log(mass); });
}
Run Code Online (Sandbox Code Playgroud)

它不像我认为的那样工作.怎么做$emit$on工作?

javascript angularjs

880
推荐指数
6
解决办法
58万
查看次数

AngularJS:在调用$ scope时防止错误$ digest正在进行中.$ apply()

我发现自从以角度构建应用程序后,我需要手动将页面更新到我的范围.

我知道这样做的唯一方法是$apply()从我的控制器和指令的范围调用.这个问题是它不断向控制台抛出一个错误:

错误:$ digest已在进行中

有谁知道如何避免这个错误或以不同的方式实现相同的事情?

angularjs angularjs-scope angularjs-digest

832
推荐指数
14
解决办法
42万
查看次数

将HTML插入视图

是否可以在AngularJS控制器中创建HTML片段并在视图中显示此HTML?

这需要将不一致的JSON blob转换为嵌套的id : value对列表.因此,HTML是在控制器中创建的,我现在希望显示它.

我创建了一个模型属性,但是如果不打印HTML,则无法在视图中呈现它.


更新

似乎问题来自角度渲染创建的HTML作为引号内的字符串.将试图找到解决这个问题的方法.

示例控制器:

var SomeController = function () {

    this.customHtml = '<ul><li>render me please</li></ul>';
}
Run Code Online (Sandbox Code Playgroud)

示例视图:

<div ng:bind="customHtml"></div>
Run Code Online (Sandbox Code Playgroud)

给:

<div>
    "<ul><li>render me please</li></ul>"
</div>
Run Code Online (Sandbox Code Playgroud)

javascript escaping html-sanitizing angularjs

788
推荐指数
9
解决办法
64万
查看次数

如何设置焦点在输入字段?

在AngularJS中设置焦点到输入字段的"角度方式"是什么?

更具体的要求:

  1. 当一个模态被打开时,预定义的焦点设置<input>此模态中.
  2. 每次<input>变得可见(例如,通过单击某个按钮),将焦点设置在它上面.

我试图达到第一个要求autofocus,但只有当模态被打开的第一次,只有在特定的浏览器(如Firefox中这是行不通的)这个作品.

任何帮助将不胜感激.

angularjs angularjs-directive

753
推荐指数
15
解决办法
58万
查看次数

搜索引擎如何处理AngularJS应用程序?

关于搜索引擎和SEO,我看到AngularJS应用程序存在两个问题:

1)自定义标签会发生什么?搜索引擎会忽略这些标签中的所有内容吗?即假设我有

<custom>
  <h1>Hey, this title is important</h1>
</custom>
Run Code Online (Sandbox Code Playgroud)

<h1>即使是在自定义标签内,也会被编入索引?


2)有没有办法避免索引{{}}的搜索引擎字面上绑定?即

<h2>{{title}}</h2>
Run Code Online (Sandbox Code Playgroud)

我知道我可以做点什么

<h2 ng-bind="title"></h2>
Run Code Online (Sandbox Code Playgroud)

但是,如果我想让爬虫"看到"标题怎么办?服务器端渲染是唯一的解决方案吗?

seo html5 search-engine google-search angularjs

696
推荐指数
10
解决办法
21万
查看次数

AngularJS模板中的if else语句

我想在AngularJS模板中做一个条件.我从Youtube API获取视频列表.一些视频的比例为16:9,有些视频的比例为4:3.

我想做一个像这样的条件:

if video.yt$aspectRatio equals widescreen then 
    element's attr height="270px"
else
    element's attr height="360px"
Run Code Online (Sandbox Code Playgroud)

我正在使用迭代视频ng-repeat.我不知道该怎么办这个条件:

  • 在范围内添加功能?
  • 在模板中做到这一点?

if-statement angularjs

692
推荐指数
7
解决办法
105万
查看次数

如何在AngularJS中使用ng-repeat迭代键和值?

在我的控制器中,我有以下数据: $scope.object = data

现在这个数据是带有键和值的字典json.

我可以object.name在模板中访问该属性.有没有什么方法可以迭代键,并在表格中显示它们

<tr><td> {{key}} </td> <td> data.key </td>

数据是这样的

{
    "id": 2,
    "project": "wewe2012",
    "date": "2013-02-26",
    "description": "ewew",
    "eet_no": "ewew",
}
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-ng-repeat

671
推荐指数
4
解决办法
53万
查看次数

如何使用AngularJS绑定到复选框值列表?

我有几个复选框:

<input type='checkbox' value="apple" checked>
<input type='checkbox' value="orange">
<input type='checkbox' value="pear" checked>
<input type='checkbox' value="naartjie">
Run Code Online (Sandbox Code Playgroud)

我想绑定到我的控制器中的列表,以便每当更改复选框时,控制器都会维护所有已检查值的列表,例如,['apple', 'pear'].

ng-model似乎只能将一个复选框的值绑定到控制器中的变量.

还有另一种方法可以将四个复选框绑定到控制器中的列表吗?

javascript angularjs

662
推荐指数
11
解决办法
58万
查看次数

为什么AngularJS在select中包含一个空选项?

我在过去几周一直在使用AngularJS,而真正困扰我的一件事是,即使在尝试了所有排列或http://docs.angularjs.org/api/ng规范中定义的配置之后.directive:select,我仍然得到一个空选项作为select元素的第一个子元素.

这是玉:

select.span9(ng-model='form.type', required, ng-options='option.value as option.name for option in typeOptions');
Run Code Online (Sandbox Code Playgroud)

在这里控制器:

$scope.typeOptions = [
    { name: 'Feature', value: 'feature' },
    { name: 'Bug', value: 'bug' },
    { name: 'Enhancement', value: 'enhancement' }
];
Run Code Online (Sandbox Code Playgroud)

最后,这是生成的HTML:

<select ng-model="form.type" required="required" ng-options="option.value as option.name for option in typeOptions" class="span9 ng-pristine ng-invalid ng-invalid-required">
    <option value="?" selected="selected"></option>
    <option value="0">Feature</option>
    <option value="1">Bug</option>
    <option value="2">Enhancement</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我需要做些什么才能摆脱它?

PS:事情也没有这个,但如果你使用select2而没有多重选择,它看起来很奇怪.

angularjs

644
推荐指数
9
解决办法
40万
查看次数