gpt4 book ai didi

javascript - 我可以让范围扩展angularjs中的对象吗?

转载 作者:搜寻专家 更新时间:2023-11-01 04:17:20 25 4
gpt4 key购买 nike

假设我写了一个这样的应用:

<script>

myArray=<?php echo $array;?>;
app={
myArray:myArray,
myIndex:myArray.length-1,
back:function(){this.myIndex--;console.log("You clicked back");},
forward:function(){this.myIndex++}
}
</script>

现在我想添加一个 UI,所以我决定使用 angularJS。所以我这样写:

<div ng-app="myApp">
<div ng-controller="AppCtrl">
<div ng-repeat="value in myArray | slice:myIndex:myIndex+1">
<div ng-cick="back()">Back</div>
<div ng-bind="value"></div>
<div ng-cick="forward()">Forward</div>
</div>
</div>
</div>

我也有这个

var myApp=angular.module('myApp', [])

myApp.filter('slice', function() {
return function(arr, start, end) {
return arr.slice(start, end);
};
});

myApp.controller("AppCtrl",function($scope){
$.extend($scope,app);
})

然后我单击后退按钮,控制台记录“您单击后退”,但值没有改变。为什么 JQuery 在这种情况下不扩展工作,我怎样才能让它正常工作?

最佳答案

$.extend 可以正常工作.. 但是.. 你并不真的需要它.. 阅读/观看 this .

要解决您的问题...只需执行以下操作:

  myApp.controller("AppCtrl",function($scope){
$scope.app = app;
})

和。

  <div ng-controller="AppCtrl">
<div ng-repeat="value in app.myArray | slice:app.myIndex:app.myIndex+1">
<button ng-click="app.back()">Back</button>
<div>{{value}}</div>
<button ng-click="app.forward()">Forward</button>
</div>
</div>

希望这能为您指明正确的方向。

更新

一个解决方案是使用 Controller 作为语法...所以

myApp.controller("AppCtrl",function(){
angular.extend(this,app);
})

  <div ng-controller="AppCtrl as app">
<div ng-repeat="value in app.myArray | slice:app.myIndex:app.myIndex+1">
<button ng-click="app.back()">Back</button>
<div ng-bind="value"></div>
<button ng-click="app.forward()">Forward</button>
</div>
</div>

在第一个示例中,$scope.app 具有上下文(因为它是您混入的前向、后向等的所有者)。

关于javascript - 我可以让范围扩展angularjs中的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21211145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com