按钮显示/隐藏服务
我已经在AngularJS中创建了一个服务和视图,它提供了基于控件的动态按钮。我无法实现隐藏/显示控制器中变量的按钮。按钮显示/隐藏服务
HeaderRemote.js
app.factory('HeaderRemote',['$rootScope', function($rootScope) { var factory = {
toolbar: []
};
// on history changes, remove toolbar
$rootScope.$on("$routeChangeStart", function (event, next, current) {
factory.toolbar.splice(0,factory.toolbar.length);
});
return factory;
}]);
HeaderController.js
return app.controller('HeaderCtrl', ['$rootScope', '$scope', 'HeaderRemote', function ($rootScope, $scope, HeaderRemote{
$scope.toolbar = HeaderRemote.toolbar;
}]);
HeaderView.html
<ul class="nav navbar-nav"> <li ng-repeat="tool in toolbar">
<button type="button"
class="btn btn-link"
ng-click="tool.fn()"
ng-show="tool.show === undefined || tool.show">
<span ng-show="tool.icon" class="{{tool.icon}}"></span>
<span>{{tool.name}}</span>
</button>
</li>
</ul>
然后我的另一控制器操纵头远程等:
HeaderRemote.toolbar.push({ name: "Save",
fn: $scope.save,
icon: "icon-check-alt",
show: $scope.showSave
});
$scope.showSave
最初设置为false
但稍后我将其设置为true
并且它在标头中永不改变。
回答:
当您最初推新项目进入HeaderRemote.toolbar:
HeaderRemote.toolbar.push({ name: "Save",
fn: $scope.save,
icon: "icon-check-alt",
show: $scope.showSave
});
要指定任何$ scope.showSave的电流值。但是,您并未将该新数组元素绑定到$ scope,因此如果$ scope发生更改,那么这不会更改HeaderRemote内部的数组。如果你愿意,你可以设置它调用HeaderRemote.toolbar.push(控制器内部观察者),像这样:
$scope.$watch("showSave", function (newValue, oldValue) { if (newValue !== oldValue) {
/** Note that you'll need some way of retaining the index of the Header item you want to change. **/
HeaderRemote.toolbar[0].show = newValue;
}
})
以上是 按钮显示/隐藏服务 的全部内容, 来源链接: utcz.com/qa/266901.html