我有两个按钮。
<div class="btn-group" ng-init="showData = 1">
<button ng-model="showData" type="button" ng-class='{"btn btn-primary": showData == 1, "btn btn-white": showData != 1}' ng-click="showData = 1">Headline</button>
<button ng-click="eventDescription()" ng-model="showData" type="button" ng-class='{"btn btn-primary":showData == 2, "btn btn-white": showData != 2}' ng-click="showData = 2">Summary</button>
</div>
在我的控制器中,我有一个调用WS的函数,在控制台中我打印一条消息,以确保它正常工作,我能够看到它, 我的功能是这样的:
$scope.eventDescription = function () {
some code goes here
console.log("Service OK")
}
功能代码无关紧要,所以我没有把代码放在
问题是,当我点击按钮切换到该视图时没有任何反应,我无法切换到该视图,所以如果我使用ng-click,我不会得到错误。
也许我错过了一些东西,但我是个新角色。
我认为这是相关的,取决于按钮选择我调用不同的指令(我在它们上呈现一些HTML),如下所示:
<head-line-view ng-show="showData == 1"></head-line-view>
<summary-view ng-show="showData == 2"></summary-view>
答案 0 :(得分:1)
按钮标记中有2 ng-click属性,请尝试此
<button ng-click="eventDescription();showData = 2" ng-model="showData" type="button" ng-class='{"btn btn-primary":showData == 2, "btn btn-white": showData != 2}'>Summary</button>
答案 1 :(得分:1)
点击两个按钮,必须调用函数eventDescription。
在原始代码中...... 第一个按钮只是更改$ scope.showData的值。 第二个按钮有两次ng-click,一旦做了'eventDescription&#39;而不是&#39; eventDescription()&#39;,另一个是更改$ scope.showData的值。
如果在按钮上单击,您希望更改$ scope.showData的值并调用函数$ scope.eventDescription,您应该在函数中更改它...但是,您可以在ng上执行此操作 - 同样点击
ng-click="showData = 1 && eventDescription()"
我更喜欢在函数中执行它,因为它会占用html中较少的空间。
<div class="btn-group">
<button ng-click="eventDescription(1)">Headline</button>
<button ng-click="eventDescription(2)" >Summary</button>
</div>
$scope.eventDescription = function (viewNumber) {
$scope.showData = viewNumber;
console.log("Button Clicked");
}
答案 2 :(得分:0)
您可以遵循以下几点:
- 您应该将
中使用app.service('mapService', (function($http,$q) { //Coordinates var fmCoordinates = {}; //Function to Request markets var requestMarkets = function(lat,lng){ var defer = $q.defer(); var dataFromHttp = {}; var options = { type: "GET", contentType: "application/json; charset=utf-8", url: "http://someurl?lat=" + lat + "&lng=" + lng }; $http(options).then(function(result) { dataFromHttp = result.data; defer.resolve(dataFromHttp); }, function(error){ defer.reject(error); }); return defer.promise; }; L.Control.Search = L.Control.extend({ _getLocation: function(key) { //extract latlng from _recordsCache var latLong = this._recordsCache[key]; console.log("This is latlong:\n"+Object.keys(latLong)); fmCoordinates.lat = latLong.lat; fmCoordinates.lng = latLong.lng; console.log(fmCoordinates.lat,fmCoordinates.lng || "Nothing yet!"); var promise = requestMarkets(fmCoordinates.lat,fmCoordinates.lng); promise.then(function(greeting) { for(var property in greeting.results) { console.log(property + "=" + greeting.results[property]); }; console.log('Success: ' + greeting.results); }, function(reason) { console.log('Failed: ' + reason); }); if( this._recordsCache.hasOwnProperty(key) ) return latLong;//then after use .loc attribute else return false; }, L.Map.addInitHook(function () { if (this.options.searchControl) { this.searchControl = L.control.search(this.options.searchControl); this.addControl(this.searchControl); } }); L.control.search = function (options) { return new L.Control.Search(options); }; }));
用于不在其他标记中的输入字段,因此不应在按钮标记- 最好在控制器
中初始化ng-model
- 醇>
$scope.showData = 1;
类很常见,因此请在btn
中使用,不需要条件
所以你可以尝试:
<强> HTML:强>
class="btn"
<强>控制器:强>
<div class="btn-group">
<button type="button" class="btn" ng-class="showData===1? 'btn-primary' : 'btn-white' " ng-click="showData = 1">Headline</button>
<button type="button" class="btn" ng-class="showData===2? 'btn-primary' : 'btn-white' " ng-click="eventDescription()" >Summary</button>
</div>