Ich habe folgende Angular Erklärungen zu laufen, und erhalten keine Beschwerden über JS Syntaxfehler oder ähnliches:Winkelmodul und Controller Dateien scheinen nicht
App.js
:
(function() {
'use strict';
var hookPointApp = angular.module("hookPointApp", []);
hookPointApp.controller("agentCtrl", function ($scope, $http) {
$scope.model = {};
...
});
})();
suburbsCtrl
:
(function() {
'use strict';
angular.module("hookPointApp").controller('suburbsCtrl', function ($scope, $http) {
$scope.areas.url = "/Area/ProvinceAreas";
$scope.areas.getOptions = function (provinceId) {
var area = "{'provinceId': '" + provinceId + "'}";
$.ajax({
url: $scope.areas.url,
type: "POST",
data: area,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
cache: false,
success: function (response) {
if ((response !== null) && (typeof response !== "undefined")) {
$scope.areas.options = response;
}
},
error: function (xmlHttp, textStatus, errorThrown) {
alert(errorThrown);
}
});
};
// TODO Get a proper provinceId somehow.
$scope.areas.getOptions(1);
...
});
})();
Dann habe ich einen Repeater mit Optionen erklärt wie:
<div ng-controller="suburbsCtrl">
<div class="form-group">
@Html.LabelFor(model => model.AreaId, new { @class = "control-label" })
<select class="form-control" ng-model="areas.areaId" ng-change='areas.getOptions($("#province.val()"))'>
<option> - Select an Area - </option>
<option id="province" ng-repeat="item in areas.options" ng-value="{{item.Id}}">{{item.Label}}</option>
</select>
</div>
</div>
getOptions
wird nicht aufgerufen, wenn ich die Auswahloption und die Haltepunkte ändere, die ich in den Chrome-Debugger einfüge, auch auf Zeilen, die nicht in Funktionen sind. $scope.areas.getOptions(1);
, die für die Initialisierung eines Dropdown ist, ist nicht in einer Funktion, sondern unterhalb der Deklaration der Funktion, also möchte ich die Funktion deklarieren und dann sofort danach aufrufen. Ein Breakpoint in der Moduldatei, auf var hookPointApp = angular.module("hookPointApp", []);
funktioniert nicht einmal, aber einige Angular-Funktionalität in der App funktioniert manchmal noch.
Die Angular (Kern und meine eigenen Dateien) sind, glaube ich, richtig an der Unterseite des in Layout.cshtml
body
Element verwiesen:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
<script src="~/Scripts/angular/angular.js"></script>
<script src="~/Scripts/angular/angular-resource.min.js"></script>
<script src="~/Scripts/App/App.js"></script>
<script src="~/Scripts/App/suburbsCtrl.js"></script>
@RenderSection("ViewScripts", required: false)
</body>
Was könnte ich falsch gemacht?
Was areas.options ist, ist es möglich, dieses Array Inhalt zu zeigen? – brk
Nur BTW, anscheinend hat Chrome Probleme mit Breakpoints, also verwende ich die gute alte, dreckige Debugger-Anweisung, und der Code läuft tatsächlich. Jetzt kann ich das Problem leichter finden. – ProfK