我可以使范围扩展angularjs中的对象吗?

Nic*_*ing 5 javascript angularjs

说我写这样的应用程序:

<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>
Run Code Online (Sandbox Code Playgroud)

现在我想添加一个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>
Run Code Online (Sandbox Code Playgroud)

我也得到了这个

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);
})
Run Code Online (Sandbox Code Playgroud)

然后我单击后退按钮,控制台记录"您单击后退",但值不会更改.为什么JQuery不能在这种情况下扩展工作?如何让它正常工作?

cal*_*oyd 4

$.extend会工作得很好..但是..你真的不需要它..阅读/观看这个

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

  myApp.controller("AppCtrl",function($scope){
      $scope.app = app;
  })
Run Code Online (Sandbox Code Playgroud)

和。

  <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>
Run Code Online (Sandbox Code Playgroud)

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

更新

一种解决方案是使用控制器作为语法......所以

myApp.controller("AppCtrl",function(){
    angular.extend(this,app);
})
Run Code Online (Sandbox Code Playgroud)

  <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>
Run Code Online (Sandbox Code Playgroud)

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