Angular通过另一个组件获得新的作用域
Angular get new scope through another component
我正在用angular 1.5.5构建一个基于组件的应用程序项目
我正在使用d3js创建一些.floating-node
,并为每个创建一个新的$scope并附加在编译的组件中。
这部分代码如下:
nodeEnter.each(() => {
let childScope = this.$scope.$new();
childScope.test = "test";
let compiled = this.$compile('<mycomponent></mycomponent>')(childScope);
(this.mainContainer).append(compiled);
});
这部分代码运行得很好。
这是mycomponent
export default class Mycomponent {
constructor($scope) {
console.log($scope.test); // undefined
console.log($scope.$parent.test); // test
}
}
Mycomponent.$inject = ["$scope"];
但是当我得到我的mycomponent
分量。我找不到正确的$scope
我检查了$id
,了解childScope.$id
在Mycomponent
$scope.$id += 1
我知道我可以通过$scope.$parent
,但我将创建不需要的$scope
,并且它在循环中并不真正受欢迎。
那么我怎样才能得到相同的$scope
呢?
似乎有一个误解。.component
将始终创建它自己的、孤立的作用域,并且您根本不需要在组件中使用$scope
。如果你认为这在你的情况下是绝对必要的,那么使用.directive
。但我建议适当地重新设计您的组件。
在这种情况下,您不需要使用$scope.$new()
,因为$compile
已经创建了一个新的scope实例
更简单的方法来解决你的问题是使用querySelector,我想做一些像下面的代码应该帮助你:
newScope = angular.element(document.querySelector("#myId")).isolateScope();
这样你就可以通过newScope传递数据了
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- AngularJS指令隔离作用域
- Angularjs:修改js中的作用域,稍后在页面中使用
- 访问多个指令的隔离作用域
- Javascript作用域和Ajax调用;工作不正常
- 带有KendoUI组件的Javascript变量作用域
- 为什么Angular 1.5双向绑定在将作用域变量传递给组件绑定时失败
- Ember组件块在视图中的作用域
- Angular 2的组件变量作用域和引用
- AngularJS嵌套组件和作用域
- Angular通过另一个组件获得新的作用域