Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS双向绑定不起作用_Javascript_Html_Angularjs - Fatal编程技术网

Javascript AngularJS双向绑定不起作用

Javascript AngularJS双向绑定不起作用,javascript,html,angularjs,Javascript,Html,Angularjs,我似乎在这里找不到答案。所以我在问我做错了什么。我有一种方法,可以测量屏幕的高度并除以一个div的高度,以决定一次显示多少个div,并分页列表中剩余的div。问题是,我无法在加载指令时进行测量,因为尚未加载div列表,所以需要在容器div进入视图时进行测量。这意味着我需要更新控制器作用域变量,并将其反映在指令作用域中。进入双向绑定!但它不起作用,所以。。。谢谢你的帮助。下面的代码 var app = angular.module('main'); app.directive('itemList

我似乎在这里找不到答案。所以我在问我做错了什么。我有一种方法,可以测量屏幕的高度并除以一个div的高度,以决定一次显示多少个div,并分页列表中剩余的div。问题是,我无法在加载指令时进行测量,因为尚未加载div列表,所以需要在容器div进入视图时进行测量。这意味着我需要更新控制器作用域变量,并将其反映在指令作用域中。进入双向绑定!但它不起作用,所以。。。谢谢你的帮助。下面的代码

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);