小编use*_*246的帖子

$ emit或$广播从控制器到指令AngularJS的事件

我希望能够在事件发生更改指令显示的内容时通知指令.我知道指令只运行一次,所以我想知道如何做到这一点.我也不确定我是否应该使用$ emit或$ broadcast,这是一个控制器的子指令?

例如,在我的控制器中,我有:

$rootScope.$emit('PHOTO_UPLOADED', photo);

在我的指令中:

.directive('photo', [function () {
  return {
    restrict: 'EA',
    scope: {user: '='},
    replace: true,
    template: '<div id="{{user.id}}"></div>',
    link: function ($scope, element, attrs) {
      var thumbnail = ($scope.user && $scope.user.image) 
        ? $scope.user.image
        : '/default.png';

      element.css('background-image', 'url(' + thumbnail + ')');

      $rootScope.$on('PHOTO_UPLOADED', function(event, data) {
         thumbnail = data;
      });
    }
  };
}])
Run Code Online (Sandbox Code Playgroud)

我试图这样做但没有发生任何事情,缩略图没有更新,因为该指令已经运行.

javascript angularjs angularjs-directive angularjs-scope

21
推荐指数
2
解决办法
2万
查看次数

在另一家工厂AngularJS内使用工厂

我有一个模块......

angular.module('myModule', []);
Run Code Online (Sandbox Code Playgroud)

然后是工厂

angular.module('myModule')
.factory('factory1', [
  function() {
    //some var's and functions
}
]);
Run Code Online (Sandbox Code Playgroud)

然后是另一家工厂

angular.module('myModule')
.factory('factory2', [
  function() {
    //some var's and functions BUT I want to use some var's from factory1
}
]);
Run Code Online (Sandbox Code Playgroud)

但是我想在factory2中使用factory1中的一些变量,如何将factory1注入factory2?

javascript angularjs angularjs-module angularjs-factory

17
推荐指数
1
解决办法
1万
查看次数

DIV上的ng-blur

我试图隐藏DIV模糊(焦点已被删除DIV).我正在使用角度和引导程序.到目前为止,我已经尝试在显示DIV时设置"焦点" ,然后ng-blur在用户点击屏幕上的任何其他位置时设置功能.这不起作用.

基本上问题是我#lockerBox不能通过JS 设置焦点我的" ",hideLocker当我DIV点击它时,我的" "功能没有问题.

<div class="lock-icon" ng-click="showLocker(result); $event.stopPropagation();"></div>
<div ng-show="result.displayLocker" id="lockerBox" ng-click="$event.stopPropagation();" ng-blur="hideLocker(result)" tabindex="1">

  $scope.displayLocker = false;
  $scope.showLocker = function ( result ) {

    $scope.displayLocker = !$scope.displayLocker;
    node.displayLocker = $scope.displayLocker;

    function setFocus() {
      angular.element( document.querySelector( '#lockerBox' ) ).addClass('focus');
    }

    $timeout(setFocus, 100);
  };


  $scope.hideLocker = function ( node ) {
    $scope.displayLocker = false;
    node.displayLocker = $scope.displayLocker;
  };
Run Code Online (Sandbox Code Playgroud)

javascript focus blur angularjs

10
推荐指数
2
解决办法
2万
查看次数

有选择地向ng-repeat AngularJS添加一个类

我有一个表的ng-repeat,我希望能够在<td>单击时添加一个类,并在单击时删除该类.<td>可以同时选择多个.现在所有的城市都适用或不适用.

例如:(假设节点有100个项目)

<tr ng-repeat node in nodes>
  <td>{{node.name}}</td>
  <td>{{node.date}}</td>
  <td ng-click="toggleMe( node.city )" ng-class"{clicked : isClicked()}" >{{node.city}}</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

在我的JS中

$scope.cityArr = [];

$scope.toggleMe = function(city) {
  if ($scope.count > 0) {
    angular.forEach($scope.cityArr, function(value) {
      if (city === value) {
        $scope.clicked = false;
      } else {
        $scope.cityArr.push(city);
        $scope.clicked = true;
      }
    });
  } else {
    $scope.cityArr.push(city);
    $scope.clicked = true;
  }
  $scope.count = 1;
};

$scope.isClicked = function() {
  return $scope.clicked;
};
Run Code Online (Sandbox Code Playgroud)

angularjs ng-class angularjs-ng-class

6
推荐指数
1
解决办法
1415
查看次数

单击后,悬停状态卡在按钮上

我有一个有两种状态的表单:编辑和可见.当您单击图标编辑表单时,底部的两个按钮(如提交一样)似乎保存或取消.单击它们时,表单会更新(或取消),按钮会消失.问题是,当我重新打开表单进行编辑(并且按钮再次可见)时,单击的最后一个仍然在Chrome中应用了悬停状态.

       <div>
          <div class="col-xs-5">
            <button class="btn btn-primary pull-right" ng-click="save(true)">Save</button>
          </div>

          <div class="col-xs-5 cancel-btn">
            <button class="btn btn-primary pull-left" ng-click="cancel()">Cancel</button>
          </div>
        </div>
Run Code Online (Sandbox Code Playgroud)

为简单起见,这里只是取消功能......

   $scope.cancel = function() {
      //set a flag for angular to hide/show editing mode in HTML
      $scope.editMode = false;
   };
Run Code Online (Sandbox Code Playgroud)

javascript hover css3 angularjs twitter-bootstrap-3

6
推荐指数
1
解决办法
2711
查看次数

:带有ng-repeat的第一个孩子

我有一个ng-repeat,只想在ng-repeat中div使用类的第一个样式type.

<div class="my-list" ng-repeat="item in list">
  <div class="type">
    <span>{{item.label}}</span>
  </div>
  <div class="check">
    <span>{{item.ischecked}}</span>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但是它将CSS应用于所有divs类的type

.my-list .type:first-child
Run Code Online (Sandbox Code Playgroud)

css css-selectors css3 angularjs angularjs-ng-repeat

6
推荐指数
2
解决办法
7711
查看次数

orderBy数字角js

我有一系列的对象......

var userObjects =[
{userName: bob,
 age: "25",
 gender: "m"
},
{userName: bill,
 age: "15",
 gender: "m"
},
{userName: jen,
 age: "45",
 gender: "f"
},
]
Run Code Online (Sandbox Code Playgroud)

现在我在我的HTML中有一个ng-repeat来迭代这个对象数组.我希望它按年龄排序:

<tr ng-repeat="user in userObjects | orderBy:-age">
Run Code Online (Sandbox Code Playgroud)

在我的JS中,我将我的年龄转换为汉堡......

data.forEach(function(user){
   user.age= parseFloat(user.age);
}
Run Code Online (Sandbox Code Playgroud)

Angular不会按年龄排序,我希望看到......

bill, 15
bob, 25
jen, 45
Run Code Online (Sandbox Code Playgroud)

但相反,他们到处都是.我究竟做错了什么?

谢谢!

sql-order-by parsefloat angularjs angularjs-ng-repeat

5
推荐指数
3
解决办法
1万
查看次数

如果兄弟元素存在于PURE CSS中,则有条件地设置样式

我有以下结构,其中第二个元素可能出现也可能不出现.

<div class="wrapper">
    <div class="firstElement"></div>
    <div class="secondElement"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想有条件地设置样式,.firstElement如果.secondElement存在的话.

有没有办法用PURE CSS做到这一点?有兄弟选择器/父选择器吗?

谢谢!

html css css3

5
推荐指数
1
解决办法
4268
查看次数

正则表达式匹配字符串,直到whitespace Javascript

我希望能够匹配以下示例:

www.example.com
http://example.com
https://example.com
Run Code Online (Sandbox Code Playgroud)

我有以下正则表达式不匹配www.但会匹配http:// https://.我需要匹配上面示例中的任何前缀,直到下一个空格,从而整个URL.

var regx = ((\s))(http?:\/\/)|(https?:\/\/)|(www\.)(?=\s{1});
Run Code Online (Sandbox Code Playgroud)

假设我有一个如下所示的字符串:

I have found a lot of help off www.stackoverflow.com and the people on there!

我想在该字符串上运行匹配并获取

www.stackoverflow.com

谢谢!

javascript regex string whitespace

3
推荐指数
1
解决办法
7558
查看次数

表单验证 - 多封电子邮件

嗨,我有一个带有文本区域的表单,其中包含多个电子邮件地址.我如何在AngularJS中验证这一点,现在它说当有多个电子邮件时它无效.电子邮件将以逗号分隔.

<form name="testForm" ng-submit="submit()" novalidate>
     <textarea type="email" multiple rows="3" name="emailInput" placeholder="Email Addresses" ng-model="user.email" required></textarea>    
     <button type="submit" ng-disabled="testForm.$invalid">Email</button>
</form>
Run Code Online (Sandbox Code Playgroud)

forms email html5 angularjs

2
推荐指数
1
解决办法
7134
查看次数