标签: angularjs-directive

angularjs在控制器之间共享数据配置

我想知道什么是在控制器之间共享指令的好方法.我有两个指令在不同的控制器中使用不同的配置,我认为使用的第一个想法:

//html
<body data-ng-controller="MainCtrl">
    <div class="container">
        <div data-ui-view></div>
    </div>
</body>

//js
.controller('MainCtrl', function ($scope,$upload) {
    /*File upload config*/
    $scope.onFileSelect = function($files) {
        for (var i = 0; i < $files.length; i++) {
          var file = $files[i];
          $scope.upload = $upload.upload({
                url: 'server/upload/url', 
                method: 'POST',
                data: {myObj: $scope.myModelObj},
                file: file,
          }).progress(function(evt) {
            console.log('percent: ' + parseInt(100.0 * evt.loaded / evt.total));
          }).success(function(data, status, headers, config) {

            console.log(data);
          });

        }
    };
    /* Datepicker config */
    $scope.showWeeks = true;
    $scope.minDate = new Date();
    $scope.open = …
Run Code Online (Sandbox Code Playgroud)

angularjs angular-ui angularjs-directive angularjs-scope angular-ui-bootstrap

0
推荐指数
1
解决办法
3167
查看次数

Angularjs-添加/删除动态html元素(下拉列表)

这是我的代码 - http://plnkr.co/edit/oTWXbLIKOxoGTd4U0goD?p=preview

  1. 为什么日子dropdown没有数据绑定scope.demoDays,它总是空的?

  2. 这是dropdown动态添加的正确方法吗?如果用户添加5个下拉列表,如何获得结果,将 ng-model="selectedDay"创建一个选择数组?有什么建议?

谢谢

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope, $compile) {

  var counter = 0;
  $scope.fields = [];

  $scope.days =['Day','Sun','Mon','Tue','Wed','Thu','Fri','Sat'];

    $scope.addField = function() {          
     $scope.fields.push({name:"test " + counter++});
    };
});



app.directive('demoDisplay', function($compile){
    return {
    scope:{
        demoDisplay:"=", //import referenced model to our directives scope
        demoDays:"="
      },
     link:function (scope, elem, attr, ctrl) 
      {
        scope.$watch('demoDisplay', function(){ // watch for when model changes

          elem.html("") //remove all elements

          angular.forEach(scope.demoDisplay, function(d){ //iterate list
              var …
Run Code Online (Sandbox Code Playgroud)

html javascript angularjs angularjs-directive

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

你如何更新指令html和编译,以便角度响应?

这是我破碎的代码的小提琴.

我已经创建了一个简单的小指令(绝不是完整的),以最简单的方式呈现日期选择器.绑定到范围属性时,可以通过单击某一天来更新该属性.到现在为止还挺好.当然,您需要能够查看其他月份.这是事情变得棘手的地方.当有人点击顶部日期旁边的"<"或">"时,我正在重新生成与模板绑定的HTML:属性.当我这样做时,我正在尝试$ compile,以便所有角度连接仍然按预期运行,但我遗漏了一些关于我的$ compile操作如何更改元素的内容.我用它来编译新的HTML:

element.replaceWith($compile(getCalHMTL(month, year))(scope));
Run Code Online (Sandbox Code Playgroud)

这是有效的,一切都连接到第二次调用,但是当第二次调用(通过第二次点击'>'或'<')时,我收到以下错误消息:

Cannot read property 'replaceChild' of null
Run Code Online (Sandbox Code Playgroud)

好像元素在link:property中为null.在这个例子中,我应该如何使用$ compile来完成这项工作?

angularjs angularjs-directive

0
推荐指数
1
解决办法
1262
查看次数

使用AngularJs无法获得textarea值

<tr class="labels">
    <td nowrap="nowrap">Address</td>
    <td nowrap="nowrap"><label for="tbAddress"></label>
        <textarea name="tbAddress" id="tbAddress" cols="39" rows="5" ng-model="$parent.tbAddress"></textarea>

    </td>

</tr>
<tr>
    <td>&nbsp;</td>
    <td align="right">
        <input type="submit" name="button" id="button" value="Submit Record" class="btns" />
        <input type="reset" name="button2" id="button2" value="Cancel" class="btns" />
    </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

我无法textarea使用AngularJS 获得价值.所有input文本字段都通过控制器,除了textarea.我究竟做错了什么 ?

alert($scope.tbAddress);
var thisData = {
    'name': $scope.tbFN,
    'company': $scope.tbCompany,
    'designation': $scope.tbDesignation,
    'email': $scope.tbEmail,
    'phone': $scope.tbPhone,
    'mobile': $scope.tbMobile,
    'address': $scope.tbAddress
};
Run Code Online (Sandbox Code Playgroud)

这是警报未定义......

javascript angularjs angularjs-directive angularjs-scope

0
推荐指数
1
解决办法
4374
查看次数

将数据从控制器/服务导入指令?

我是AngularJS的相对入门者,正在编写一个具有各种可重用组件的应用程序(例如,同一张表可能在屏幕上出现5次,但列数略有不同-如有必要,我可以详细介绍)。其他人也会想编写使用这些组件的代码。同样,多个组件将要从相同的来源中提取数据,并且多个人将要进行相同的REST调用以获取数据。

我想到的一般架构:

  • 可重用的UI组件的指令;这些代码不会直接编辑
  • 用于获取相关数据的服务-例如,“ AnimalService”将发出一些HTTP请求,取回JSON数据,并通过其定义的方法将其提供给调用方。服务将是控制器的依赖项。我实质上将服务视为应该在控制器内用于获取数据的“公共API”。同样,使用它们的人不会修改这些内容。
  • 控制器和HTML将由人们使用上述指令和服务编写,以使其应用程序编写。

举一个简单的例子,一条指令将使用ng-repeat打印一个名称列表。服务将具有一个“公共”函数getNames(),该函数返回名称列表。我正在编写一个应用程序-我使用“ canned”指令和服务,我编写了一个将服务作为依赖项的控制器,调用getNames()函数并将结果返回到指令。我的HTML页面像其他任何HTML元素一样简单地使用指令。

我的主要问题-将数据放入指令的最佳方法是什么?我知道就范围而言,有很多选择,但是必须在我的控件中创建一个具有特定名称的变量并“神奇地”工作似乎是错误的。

从广义上讲,这是否合理?我基本上将指令和服务视为开发人员将使用的公共API。

angularjs angularjs-directive angularjs-controller

0
推荐指数
1
解决办法
2815
查看次数

如何解决CORS即AngularJS中的相同来源策略

我正在用angularjs开发一个移动应用程序,在该应用程序中必须调用Web服务。但是,当我拨打电话时$http.get,出现以下错误。

XMLHttpRequest cannot load http://example.com/First_Step.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8020' is therefore not allowed access. 
Run Code Online (Sandbox Code Playgroud)

我的功能如下:

$scope.firstStepClick = function() {
    appSvc.selectedItem = "firstStep";
    $rootScope.go('parent/firststep', 'slideLeft');
    delete $http.defaults.headers.common['X-Requested-With'];            
    $http.get("http://example.com/First_Step.json").success(function(data) {
        $scope.firstStepData = data;
    }).error(function() {
        alert("an unexpected error occured");
    });
};
Run Code Online (Sandbox Code Playgroud)

因此,请帮助我解决此CORS问题。我正在为此移动应用程序开发使用html5,css3和angularjs。

提前致谢

xmlhttprequest same-origin-policy cors angularjs angularjs-directive

0
推荐指数
1
解决办法
6167
查看次数

AngularJS:无法通过指令更改父作用域

我试图通过指令更改控制器范围,但它不会更改.

当我通过指令更改模型时,goas将自动更改$scope.modulesin MyCtrl:

link: function (scope) {
    scope.module.title += ' changed';

    scope.module = {
        title: 'Redeclared'
    };
},
Run Code Online (Sandbox Code Playgroud)

这段代码完美无缺 scope.module.title += ' changed';

但这不是: scope.module = { title: 'Redeclared' };

在$ http.get请求之后,我们有一个对象,{title: 'Redeclared'}这就是为什么我这样做scope.module = { title: 'Redeclared' };

示例:http://jsfiddle.net/8Va9Q/

知道怎么做吗?谢谢

javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

0
推荐指数
1
解决办法
79
查看次数

scope。$ eval在angular.js指令中不起作用

我想构建一个angular.js指令,通过单击<span>,它将变成可编辑的输入。并且以下代码运行良好,除了模型为空或模型长度为0时,请使其显示为<span> EMPTY </span>

  <span  ng-editable="updateAccountProfile({'location':profile.location})" ng-editable-model="profile.location"></span> 

app.directive('ngEditable', function() {
    return {
        template: '<span class="editable-wrapper">' + '<span data-ng-hide="edit" data-ng-click="edit=true;value=model;">{{model}}</span>' + '<input type="text" data-ng-model="value" data-ng-blur="edit = false; model = value" data-ng-show="edit" data-ng-enter="model=value;edit=false;"/>' + '</span>',
        scope: {
            model: '=ngEditableModel',
            update: '&ngEditable'
        },
        replace: true,
        link: function(scope, element, attrs) { 

           var value = scope.$eval(attrs.ngEditableModel);
           console.log('value ' , attrs.ngEditableModel , value);
           if (value == undefined || (value != undefined && value.length == 0)) {
             console.log('none');
             var placeHolder = $("<span>");
             placeHolder.html("None");
             placeHolder.addClass("label"); …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive

0
推荐指数
1
解决办法
4148
查看次数

使用angularjs指令禁用所有子元素

我创建了一个指令,禁用所有选定的子元素,如下所示:

app.directive('noeDisable', function () {
        var linkFunction = function (scope, element, attributes) {
            scope.text = attributes["=noeDisable"];
            if (scope.text == 'true') {
                $(element).find('input,button,a').attr("disabled", true);
            }
        };
        return {
            link: linkFunction

        };
    });
Run Code Online (Sandbox Code Playgroud)

它适用于这个例子:<div noe-disable="true"> ... </div>.但问题是稍后加载了一些子元素,例如在ajax调用之后或者我在父元素中有另一个angularjs指令将一些子元素添加到其父元素时,所以它们不会被禁用!我该如何处理这个问题?

angularjs angularjs-directive

0
推荐指数
1
解决办法
4161
查看次数

如何从其他控制器调用$ http.post?

我在下面有这个控制器.在页面加载时,执行下面看到的$ http服务.

现在,我如何从其他控制器调用并执行控制器的$ http.post(...)部分AGAIN.


 controller: function ($scope, $element, $http) {

    function par() {               
        var xxx= null;
        xxx = $scope.$parent.$root.ParentItems['xxx'].xxx;
        var det = { xxx: xxx};              
        return det;
    }


 $http.post('/api/values/entries/GoHere', par()).success(function (salData) {

      var buildSHGraph = function (shData) {
        //code code codes...
      }

      $scope.Array1 = [];

      angular.forEach(salData, function (evt) {
         //Code Code Codes
      });

     buildSHGraph($scope.Array1);

 });

 }
Run Code Online (Sandbox Code Playgroud)

javascript jquery angularjs angularjs-directive angularjs-scope

0
推荐指数
1
解决办法
138
查看次数