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不能在这种情况下扩展工作?如何让它正常工作?
$.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具有上下文(因为它是您混合的前进、后退等的所有者)。
| 归档时间: |
|
| 查看次数: |
2625 次 |
| 最近记录: |