首页 > 解决方案 > 脚本在 onclick 按钮内不起作用

问题描述

在我的脚本上我使用

for (var i in $scope.hulls) {
if ($scope.hulls[i].id == 1234) {
console.log($scope.hulls[i]);
$scope.selectedHullShip1 = $scope.hulls[i];
 }
}

现在,在 onclick 按钮之外它可以工作,但在 onclick 按钮内部它没有,我似乎无法找出原因。我的知识有限,我边走边学。

下面的代码片段是 onclick 之外的代码,正如我所提到的那样完美地工作。使用控制台日志,我确实发现这是这段代码没有运行;-

$scope.selectedHullShip1 = $scope.hulls[i];

这是小提琴也供您查看https://jsfiddle.net/wayneker/fjwha6Ly/9/

var app  = angular.module('myApp',[]);
        app.controller('myCtrl',function ($scope){
          
    $scope.hulls = [
                            {id:4271, "name":"Everest", "src": "Everest", "Class": "Garrison", Cost:{"Oil":200000, "Metal":200000,"Energy":200000,"Zynth":200000,"Time":256075},Vars:{"maxweight":80000, "Combat_Speed":35, "Turn_Speed":35, "Map_Speed":178, "Cargo":20000000, "Repair_Duration":10800, "Mortar_Reload_Decrease":50, "Mortar_Range_Increase":20, "Projectile_Speed_Increase":10, "Splash_Increase":5, "Mortar_Critical_Chance":10, "Building_Damage_Increase":200, "Wall_Damage_Increase":600,               "Armour_Points":240000000          }     },
                            
                            
                            
                            
                            
//Some Random Test Data                         
                            {id:1234, "name": "Porthos", "src": "Porthos", "Class": "Conqueror", "Retro":0, "RT":1, "Tech": "Draconian", Cost:{"Oil":2800000,"Metal":1680000,"Energy":1400000,"Zynth":1750000,"Time":86400},Vars:{"maxweight":8000,"Armour":17500,"Combat_Speed":13,"Turn_Speed":22,"Map_Speed":17,"Evade":0,"Spread":-19,"Splash":35,"Remote_Targeting_Type":"Mortar","Remote_Targeting_Range":75,"Remote_Targeting %":50,"Ballistic_Deflection":1100,"Corrosive__Deflection":1000,"Concussive_Deflection":800,"Cargo":4075853,"Repair_Duration":2700}, Slots:{"Armour": 4,"Special": 4,"Weapon": 7}},
                            {id:2345, "name": "Corvette", "src":"Corvette", "Class":"Skirmish", "Retro":0, "RT":0.75, "Tech":"Draconian", Cost:{"Oil":265,"Metal":159,"Energy":133,"Zynth":99,"Time":600},Vars:{"maxweight":36,"Armour":14,"Combat_Speed":22,"Turn_Speed":30,"Map_Speed":40,"Evade":40,"Penetrating_Defence":20,"Explosive_Defence":40,"Ballistic_Defence":40,"Cargo":300,"Repair_Duration":11},Slots: {"Armour": 1, "Special": 1,"Weapon": 1}},
              {id:3456, "name": "Viper Interdictor","src":"Viper Interdictor","Class":"Skirmish","Retro":0,"RT":1,"Tech":"Draconian", Cost:{"Oil":7617188,"Metal":6093750,"Energy":6093750,"Zynth":15234375,"Time":486000},Vars:{"maxweight":5245,"Armour":2372,"Combat_Speed":14,"Turn_Speed":20,"Map_Speed":33,"Evade":20,"Penetrating_Defence":20,"Explosive_Defence":10,"Ballistic_Defence":20,"Concussive_Defence":50,"Concussive_Damage":40,"Cargo":757428,"Sonar":80,"Thermal_Imaging":80,"Retargetable":"True","Repair_Duration":1898},Slots: {"Armour":2,"Special": 3,"Weapon":7}},
              {id:4567, "name": "Nuclear Cruiser","src":"Nuclear Cruiser","Class":"Seige","Retro":1,"RT":1,"Tech":"Draconian", Cost:{"Oil":9140625,"Metal":7312500,"Energy":7312500,"Zynth":18281250,"Time":483200},Vars:{"maxweight":8295,"Armour":4548,"Combat_Speed":11,"Turn_Speed":15,"Map_Speed":25,"Evade":0,"Penetrating_Defence":20,"Explosive_Defence":20,"Ballistic_Defence":20,"Radioactive_Defence":30,"Radioactive_Reload":50,"Cargo":893592,"Repair_Duration":3638},"R1":{"name":"Nuclear Cruiser R1","Retro":2,"src":"Nuclear Cruiser","vars":{"Cargo":1863820}},"R2":{"name":"Nuclear Cruiser R2","Retro":2,"src":"Nuclear Cruiser","vars":{"Explosive_Defence":30,"Penetrating_Defence":30,"Cargo":1863820}},"R3":{"name":"Nuclear Cruiser R3","Retro":2,"src":"Nuclear Cruiser","vars":{"Radioactive_Defence":40,"Explosive_Defence":30,"Penetrating_Defence":30,"Cargo":1863820}},"R4":{"name":"Nuclear Cruiser R4","Retro":2,"src":"Nuclear Cruiser","vars":{"Evade":10,"Radioactive_Defence":40,"Explosive_Defence":30,"Penetrating_Defence":30,"Cargo":1863820}},"R5":{"name":"Nuclear Cruiser R5","Retro":2,"src":"Nuclear Cruiser R5","vars":{"Radioactive_Reload":75,"Evade":10,"Radioactive_Defence":40,"Explosive_Defence":30,"Penetrating_Defence":30,"Cargo":1863820}},"R6":{"name":"Nuclear Cruiser R6","Retro":2,"src":"Nuclear Cruiser R5","vars":{"Penetrating_Defence":40,"Radioactive_Reload":75,"Evade":10,"Radioactive_Defence":40,"Explosive_Defence":30,"Cargo":1863820}},"R7":{"name":"Nuclear Cruiser R7","Retro":2,"src":"Nuclear Cruiser R5","vars":{"Ballistic_Defence":30,"Penetrating_Defence":40,"Radioactive_Reload":75,"Evade":10,"Radioactive_Defence":40,"Explosive_Defence":30,"Cargo":1863820}},"R8":{"name":"Nuclear Cruiser R8","Retro":2,"src":"Nuclear Cruiser R5","vars":{"Radioactive_Defence":50,"Ballistic_Defence":30,"Penetrating_Defence":40,"Radioactive_Reload":75,"Evade":10,"Explosive_Defence":30,"Cargo":1863820}},"R9":{"name":"Nuclear Cruiser R9","Retro":2,"src":"Nuclear Cruiser R5","vars":{"maxweight":9015,"Radioactive_Defence":50,"Ballistic_Defence":30,"Penetrating_Defence":40,"Radioactive_Reload":75,"Evade":10,"Explosive_Defence":30,"Cargo":1863820}},"R10":{"name":"Nuclear Cruiser R10","Retro":2,"src":"Nuclear Cruiser R10","vars":{"Radioactive_Reload":120,"maxweight":9015,"Radioactive_Defence":50,"Ballistic_Defence":30,"Penetrating_Defence":40,"Evade":10,"Explosive_Defence":30,"Cargo":1863820}}, Slots:{"Armour": 4, "Special": 3, "Weapon": 8}, "R0":{"name":"Nuclear Cruiser","src":"Nuclear Cruiser","vars":{"Cargo":893592,"Explosive_Defence":20,"Penetrating_Defence":20,"Radioactive_Defence":30,"Evade":null,"Radioactive_Reload":50,"Ballistic_Defence":20,"maxweight":8295}}},
              {id:5678, "name": "High-Landers NC","src":"High-Landers Nuclear Cruiser","Class":"Seige","Retro":1,"RT":1,"Tech":"Draconian", Cost:{"Oil":13710938,"Metal":10968750,"Energy":10968750,"Zynth":27421875,"Time":724800},Vars:{"maxweight":9015,"Armour":5844,"Combat_Speed":11,"Turn_Speed":15,"Map_Speed":25,"Evade":10,"Penetrating_Defence":30,"Explosive_Defence":30,"Ballistic_Defence":30,"Radioactive_Defence":40,"Radioactive_Reload":80,"Cargo":1742305,"Flag Ship Only":"Yes","Repair Duration":4675},"FlagShipBonus":{"Radioactive_Defence":50,"Radioactive_Reload":50},"R1":{"name":"High-Landers NC R1","Retro":2,"src":"High-Landers NC","vars":{"Turn_Speed":18,"Map_Speed":33,"Cargo":3742305}},"R2":{"name":"High-Landers NC R2","Retro":2,"src":"High-Landers NC","vars":{"Explosive_Defence":35,"Penetrating_Defence":35,"Turn_Speed":18,"Map_Speed":33,"Cargo":3742305}},"R3":{"name":"High-Landers NC R3","Retro":2,"src":"High-Landers NC","vars":{"Evade":20,"Ballistic_Defence":35,"Explosive_Defence":35,"Penetrating_Defence":35,"Turn_Speed":18,"Map_Speed":33,"Cargo":3742305}},"R4":{"name":"High-Landers NC R4","Retro":2,"src":"High-Landers NC","vars":{"Ballistic_Defence":40,"Radioactive_Defence":50,"Radioactive_Reload":89,"Evade":20,"Explosive_Defence":35,"Penetrating_Defence":35,"Turn_Speed":18,"Map_Speed":33,"Cargo":3742305}},"R5":{"name":"High-Landers NC R5","Retro":2,"src":"High-Landers NC R5","vars":{"Ballistic_Defence":40,"Radioactive_Defence":50,"Radioactive_Reload":89,"Evade":20,"Explosive_Defence":35,"Penetrating_Defence":35,"Turn_Speed":18,"Map_Speed":33,"Cargo":3742305},"FlagShipBonus":{"Radioactive_Defence":55,"Radioactive_Reload":70}}, Slots:{"Armour": 4, "Special": 3, "Weapon": 8}, "R0":{"name":"High-Landers NC","src":"High-Landers NC","vars":{"Turn_Speed":15,"Map_Speed":25,"Cargo":1742305,"Explosive_Defence":30,"Penetrating_Defence":30,"Evade":10,"Ballistic_Defence":30,"Radioactive_Defence":40,"Radioactive_Reload":80}}},
               {id:6789, "name": "Gretas NC","src":"Gretas Nuclear Cruiser","Class":"Seige","Retro":1,"RT":1,"Tech":"Draconian", Cost:{"Oil":13710938,"Metal":10968750,"Energy":10968750,"Zynth":27421875,"Time":483200},Vars:{"maxweight":8295,"Armour":5248,"Combat_Speed":11,"Turn_Speed":15,"Map_Speed":25,"Evade":10,"Penetrating_Defence":30,"Explosive_Defence":30,"Ballistic_Defence":20,"Radioactive_Defence":40,"Radioactive_Reload":80,"Cargo":1863820,"Repair Duration":4198},"R1":{"name":"Gretas NC R1","Retro":2,"src":"Gretas NC","vars":{"Turn_Speed":18}},"R2":{"name":"Gretas NC R2","Retro":2,"src":"Gretas NC","vars":{"Penetrating_Defence":40,"Turn_Speed":18}},"R3":{"name":"Gretas NC R3","Retro":2,"src":"Gretas NC","vars":{"Ballistic_Defence":40,"Penetrating_Defence":40,"Turn_Speed":18}},"R4":{"name":"Gretas NC R4","Retro":2,"src":"Gretas NC","vars":{"Radioactive_Reload":129,"Ballistic_Defence":40,"Penetrating_Defence":40,"Turn_Speed":18}},"R5":{"name":"Gretas NC R5","Retro":2,"src":"Gretas NC R5","vars":{"Radioactive_Defence":60,"Evade":20,"Radioactive_Reload":129,"Ballistic_Defence":40,"Penetrating_Defence":40,"Turn_Speed":18}}, Slots:{"Armour": 4, "Special": 3, "Weapon": 8},"R0":{"name":"Gretas NC","src":"Gretas NC","vars":{"Turn_Speed":15,"Penetrating_Defence":30,"Ballistic_Defence":20,"Radioactive_Reload":80,"Radioactive_Defence":40,"Evade":10}}},
//End Of Test Data  

                            {"id": 1, "name": "", "src": "", Cost:{"Oil":0, "Metal":0,"Energy":0,"Zynth":0,"Time":0}}
    ];

         // $scope.selectedHullShip1 = 1234;
   
submit.onclick = function(){   
     
     alert("HI")
     



}

      for (var i in $scope.hulls) {
 if ($scope.hulls[i].id == 1234) {
   console.log($scope.hulls[i]);
   $scope.selectedHullShip1 = $scope.hulls[i];
 }
}





          
        });
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular.min.js"></script>
<body> 
    
    <div ng-app="myApp" ng-controller="myCtrl">
    
    
        Kixeye Code: <input id="KixCode" type="text" style="width: 26%" value="eNqrVsoozcnxdFGyMjEyN9RRSq0oSC0qcSrNzElRskpLzClO1VEqT00syM8rVrKKNjUwMInVUSouSE3OBMpBRCxBItmZYAWGBgZmlgbm5rG1AP+nG5g=
">
        <button id="submit">Load</button>  
    
    <br><br>
    
    
    
    
    
      
      <select ng-model="selectedHullShip1" ng-options="hull.name group by hull.Class for hull in hulls | orderBy:'name'"></select><br><br>
      
      Output:  {{selectedHullShip1}} <br><br><br><br>
      
  
    
    
    </div>
  </body>

标签: javascriptangularjs

解决方案


我意识到我的错误。我现在使用了一个 ng-click 按钮而不是另一个按钮,现在它可以正常工作了。

加载


推荐阅读