AngularJS - 接收动态内容的组件
AngularJS - Component receiving dynamic content
早上,
我编写的新组件遇到了问题,其中值没有像我想象的那样传递给控制器。
因此,让我们以这个组件声明为例,您可以看到我传入了两个字符串和一个对象,该对象相当于父控制器中的一个数字。让我们假设"url"和"pagesize"都已经很好地工作了 - 它们确实:)
<paging url="/myurl.html" pagesize="10" numberofitems="ctrl.mynumber"></paging>
您可以看到我在这里创建了一个新模块,该模块目前仅显示一个段落标签,其中包含数字"ctrl.numberofitems"变量。重要的是要知道这有效并且值显示正确。
angular.module('PagingModule', [])
.component('paging', {
scope: {},
controllerAs: 'ctrl',
bindings: {
url: '@',
pagesize: '@',
numberofitems: '='
},
controller: pagingController,
template: '<p>{{ctrl.numberofitems}}</p>'
});
function pagingController() {
var vm = this;
$scope.$watch("ctrl.numberofitems", function (val) { //ADDED THE WATCH AND CAN NOW SEE THE VALUE UNDEFINED, THEN POPULATED CORRECTLY
console.log(val);
});
}
当我尝试引用"vm.numberofitems"时,我是否收到未定义?此时,"页面大小"和"URL"都可以完全访问和填充。
编辑:现在,如果我如上所示引用$scope.watch,我可以访问从控制器推送的值 - 我现在注意到的是该值是未定义的,然后当服务的承诺被解析时,它会更改为实际列表本身。
现在问题变:)为什么我必须$watch这样做?这似乎完全矫枉过正,显然很昂贵;我只是错过了一个可以使用的非常明显的模式吗?
再次感谢
尝试等待$onInit
。
实例化控制器后,隔离作用域绑定的初始值将绑定到控制器属性。初始化后,您可以通过提供一个名为
$onInit
的控制器方法来访问这些绑定,该方法是在构造元素上的所有控制器并初始化其绑定后调用的。
-- https://docs.angularjs.org/api/ng/service/$compile#-bindtocontroller-
接下来要做的是给它放一个$watch
。
$scope.$watch("ctrl.numberofitems", function(newValue) {
console.log(newValue);
});
如果视图可以看到它,则手表应该看到它。
相关文章:
- 当组件准备就绪时,如何在Polymer中动态注册新属性
- 通过格式化将jquery移动组件动态添加到列表视图中
- 如何在reactjs中动态加载组件
- 如何动态渲染 Ember 组件
- EmberJS:动态插入组件
- Angular2 - 动态组件加载器错误
- 如何在角度 2 中向动态加载的子组件提供父组件的模型
- 使用Handlebars从动态变量渲染组件
- HTML JavaScript动态画布组件
- React/JSX动态组件名称
- 在React中动态添加子组件
- 动态添加子组件值时,如何从父组件访问这些值
- v表示动态组件vuejs1.0
- 使用ReactJS动态加载组件
- 动态生成的react引导程序组件缺少密钥属性
- ReactJS布局组件与动态子组件
- 使用 Ext.create 在 ExtJS 4 GridPanel Column 中渲染动态组件
- 添加 vue 组件动态
- 将react组件动态插入到另一个react组件中
- 将(外部)组件动态加载到React.js中