我想$scope在Chrome的JavaScript控制台中访问我的变量.我怎么做?
我既$scope不能myapp在控制台中看到我的模块名称也不能看到变量.
我不明白如何使用$scope.$watch和$scope.$apply.官方文档没有帮助.
具体我不明白:
我尝试了本教程,但需要理解$watch并$apply理所当然.
做什么$apply和$watch做什么,以及如何恰当地使用它们?
我仔细阅读了关于该主题的AngularJS文档,然后使用指令进行了调整.这是小提琴.
以下是一些相关的片段:
来自HTML:
<pane bi-title="title" title="{{title}}">{{text}}</pane>
Run Code Online (Sandbox Code Playgroud)从窗格指令:
scope: { biTitle: '=', title: '@', bar: '=' },
Run Code Online (Sandbox Code Playgroud)我有几件事没有得到:
"{{title}}"与'@'和"title"使用'='?我找到了另一个显示表达式解决方案的小提琴:http://jsfiddle.net/maxisam/QrCXh/
angularjs angularjs-directive angularjs-scope isolated-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控制器的工作?
我发现自从以角度构建应用程序后,我需要手动将页面更新到我的范围.
我知道这样做的唯一方法是$apply()从我的控制器和指令的范围调用.这个问题是它不断向控制台抛出一个错误:
错误:$ digest已在进行中
有谁知道如何避免这个错误或以不同的方式实现相同的事情?
我已经设置了我的控制器 data-ng-controller="xyzController as vm"
我有一个父/子嵌套控制器的场景.通过使用$parent.vm.property我在嵌套的html中访问父属性没有问题,但我无法弄清楚如何从我的子控制器中访问父属性.
我试过注入$ scope然后使用$scope.$parent.vm.property,但这不起作用?
有人可以提供建议吗?
现在,之间的性能差异$broadcast和$emit已被淘汰,没有任何理由,更喜欢$scope.$emit到$rootScope.$broadcast?
他们是不同的,是的.
$emit 仅限于范围层次结构(向上) - 如果它符合您的设计,这可能是好的,但在我看来这是一个相当随意的限制.
$rootScope.$broadcast适用于所有选择收听活动的人,这在我看来是一个更明智的限制.
我错过了什么吗?
编辑:
为了澄清答案,发送的方向不是我追求的问题.$scope.$emit向上发送事件,$scope.$broadcast向下发送.但为什么不总是$rootScope.$broadcast用来接触所有预期的听众呢?
我想要查看字典中的更改,但由于某种原因,不会调用监视回调.
这是我使用的控制器:
function MyController($scope) {
$scope.form = {
name: 'my name',
surname: 'surname'
}
$scope.$watch('form', function(newVal, oldVal){
console.log('changed');
});
}
Run Code Online (Sandbox Code Playgroud)
这是小提琴.
我希望每次更改名称或姓氏时都会触发$ watch回调,但不会发生.
这样做的正确方法是什么?
我正在寻找一些可以用来帮助确定在编写新指令时使用哪种类型的范围的指南.理想情况下,我想要一个类似于流程图的东西,它会引导我解决一堆问题并弹出正确答案 - 没有新的新范围,新的子范围或新的隔离范围 - 但这可能要求太多.这是我目前微不足道的指导方针:
我知道在元素上使用带有隔离范围的指令会强制同一元素上的所有其他指令使用相同(一个)隔离范围,因此当使用隔离范围时,这不会严重限制吗?
我希望来自Angular-UI团队的一些人(或其他已写过许多指令的人)可以分享他们的经验.
请不要添加简单地说"为可重用组件使用隔离范围"的答案.
提供了一个类型的HTML元素div,如何设置其id属性的值,这是范围变量和字符串的串联?