相关疑难解决方法(0)

AngularJS中范围原型/原型继承的细微差别是什么?

API参考范围页面说:

范围可以从父范围继承.

开发者指南范围页说:

范围(原型)从其父范围继承属性.

那么,子范围是否始终从其父范围继承原型?有例外吗?当它继承时,它是否总是正常的JavaScript原型继承?

javascript inheritance prototype prototypal-inheritance angularjs

1018
推荐指数
3
解决办法
15万
查看次数

ng-model,ng-repeat和输入有困难

我试图允许用户使用ngRepeat和编辑项目列表ngModel.(看到这个小提琴.)但是,我尝试过的两种方法都会导致奇怪的行为:一个不更新模型,另一个模糊每个keydown上的形式.

我在这里做错了吗?这不是支持的用例吗?

以下是小提琴的代码,为方便起见而复制:

<html ng-app>
    <head>
        <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet">
    </head>
    <body ng-init="names = ['Sam', 'Harry', 'Sally']">
        <h1>Fun with Fields and ngModel</h1>
        <p>names: {{names}}</p>
        <h3>Binding to each element directly:</h3>
        <div ng-repeat="name in names">
            Value: {{name}}
            <input ng-model="name">                         
        </div>
        <p class="muted">The binding does not appear to be working: the value in the model is not changed.</p>
        <h3>Indexing into the array:</h3>
        <div ng-repeat="name in names">
            Value: {{names[$index]}}
            <input ng-model="names[$index]">                         
        </div>
        <p class="muted">Type one character, and the input …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-ng-repeat angularjs-ng-model

116
推荐指数
4
解决办法
16万
查看次数

无法直接在ng-template中访问范围变量

所以我最近将一些重复的标记移动到ng-template块中,我注意到在块内部,我没有直接访问范围变量,但我仍然可以调用范围函数.

例如,考虑以下标记:

<script type="text/ng-template" id="toggle-button.html">
    <button ng-click="toggleFlag()">I Toggle the Flag</button>
    <button ng-click="flag = !flag">I Do Nothing</button>
</script>
<span ng-include="'toggle-button.html'"></span>
The flag is {{flag}}
Run Code Online (Sandbox Code Playgroud)

与以下脚本配对:

var app = angular.module('myApp', [])
.controller("myController", ['$scope', function($scope){
    $scope.flag = true;

    $scope.toggleFlag = function(){
        $scope.flag = !$scope.flag;
    }
}])
Run Code Online (Sandbox Code Playgroud)

Live JS这个行为的小提琴:http: //jsfiddle.net/uM4Ss/

第一个按钮工作,第二个按钮不工作.有人可以回答为什么会这样吗?

javascript angularjs

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

AngularJS:将对象属性名称传递给指令

我正在编写一个angular.js指令,它是一个对象数组的可重用输入组件.

由于不可能使用原始值ng-repeat(参见:对于数据绑定许多输入的angularjs方法是什么?),我必须将一个对象数组传递给组件:

在控制器中我初始化:

$scope.theSimpsons = [{ value: 'Bart' }, { value: 'Lisa' }];
Run Code Online (Sandbox Code Playgroud)

然后在HTML文件中使用它:

<div ng-app="App">
    <div ng-controller="AppCtrl">
        <multi-input items="theSimpsons" />
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

该指令本身实现如下:

directive('multiInput', function () {
return {
    restrict: 'E',
    scope: {
        items: '=items'
    },
    template:
        '<div>' +
        '<div ng-repeat="item in items">' +
        '<input type="text" ng-model="item.value">' +
        '<a ng-click="items.splice($index, 1)">remove</a>' +
        '</div>' +
        '<a ng-click="items.push({value:\'\'})">add</a>' +
        '</div>'
};
});
Run Code Online (Sandbox Code Playgroud)

这一切都很好.

我的问题:如果对象没有value

该指令value很难对property()的名称进行编码.但是,如果我想拥有这样一个阵列:[{ name: 'Bart' }, { name: 'Lisa' }] …

javascript angularjs angularjs-directive

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

ngRepeat中的指令时绑定问题

所以这就是它的样子,这里是Plunker

parent scope 
   ng-repeat
       directive
Run Code Online (Sandbox Code Playgroud)

在指令中,有一个属性是与父作用域中的变量进行双向绑定.

但这并不像我想的那样有效.(但我能理解为什么它不起作用)

原因是ngRepeat将创建它自己的范围,因此一旦在指令中更改变量,Angular会在ngRepeat中添加一个变量,但它会使变量保持在父变量中.

我可以做一些像scope.$ parent.$ parent.variable来改变变量,但它在Angular中不是一个想法.

我应该怎么做 ?

此外,如果我更改项目集合中的重复项目,则无法更改项目.

因为上面的原因相同.

angularjs

4
推荐指数
1
解决办法
2694
查看次数