Javascript AngularJS双向绑定不起作用
我似乎在这里找不到答案。所以我在问我做错了什么。我有一种方法,可以测量屏幕的高度并除以一个div的高度,以决定一次显示多少个div,并分页列表中剩余的div。问题是,我无法在加载指令时进行测量,因为尚未加载div列表,所以需要在容器div进入视图时进行测量。这意味着我需要更新控制器作用域变量,并将其反映在指令作用域中。进入双向绑定!但它不起作用,所以。。。谢谢你的帮助。下面的代码Javascript AngularJS双向绑定不起作用,javascript,html,angularjs,Javascript,Html,Angularjs,我似乎在这里找不到答案。所以我在问我做错了什么。我有一种方法,可以测量屏幕的高度并除以一个div的高度,以决定一次显示多少个div,并分页列表中剩余的div。问题是,我无法在加载指令时进行测量,因为尚未加载div列表,所以需要在容器div进入视图时进行测量。这意味着我需要更新控制器作用域变量,并将其反映在指令作用域中。进入双向绑定!但它不起作用,所以。。。谢谢你的帮助。下面的代码 var app = angular.module('main'); app.directive('itemList
var app = angular.module('main');
app.directive('itemList', function(ItemListService){
var linkFunction = function(scope, element, attributes){
//this function just initializes the values to be updated
scope.pagedItems = ItemListService.adaptItemstoFitPage(scope.items);
}
return {
restrict: 'E',
replace: 'true',
templateUrl: 'partials/directives/item-list.html',
link: linkFunction,
scope: {
items: "=",
pagedItems: "="
}
});
HTML
它运行上述更新$scope.pagedItems的方法,但该方法没有反映在指令中。我做错了什么?非常感谢您的帮助。我想知道
replace:true
是否会干扰双向绑定?因为它用没有原始绑定设置的html模板替换了您的?这只是一种预感,因为这在其他地方都是正确的。我认为,在链接
函数中重新分配作用域的pagedItems
属性会破坏绑定。然后,pagedItems
属性引用内存中的集合,而不是观察到的绑定变量。Hugues,我只是根据你说的做了一个测试,你是对的,它破坏了绑定。。。但我以为应该是双向的?如果我在那里更改它,它也应该更新父范围,不是吗?好吧,问题是,当您在链接中更改它时,指令完全忘记它是绑定属性,并将新数组视为值。angular停止监视并同步外部和内部范围。我建议将控制器与指令结合使用来初始化属性,而不是使用link函数。我想知道replace:true
是否会干扰双向绑定?因为它用没有原始绑定设置的html模板替换了您的?这只是一种预感,因为这在其他地方都是正确的。我认为,在链接
函数中重新分配作用域的pagedItems
属性会破坏绑定。然后,pagedItems
属性引用内存中的集合,而不是观察到的绑定变量。Hugues,我只是根据你说的做了一个测试,你是对的,它破坏了绑定。。。但我以为应该是双向的?如果我在那里更改它,它也应该更新父范围,不是吗?好吧,问题是,当您在链接中更改它时,指令完全忘记它是绑定属性,并将新数组视为值。angular停止监视并同步外部和内部范围。我建议将控制器与指令结合使用来初始化属性,而不是使用link函数。
<item-list paged-items="pagedItems" items="items"></item-list>
$scope.pagedItems = ItemListService.adaptItemsToFitPage($scope.items);